在fragment中调用适配器的监听事件,提示空指针错误,怎么解决?
fragment界面的代码,白色那行被提示错误
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.adoptpet.Adapter.mainpageAdapter;
import com.example.adoptpet.R;
import com.example.adoptpet.base.BaseFragment;
import com.example.adoptpet.entiy.mainpage;
import com.example.adoptpet.utils.Datas;
import java.util.ArrayList;
import java.util.List;
public class FindFragment extends BaseFragment {
private RecyclerView mlist;
private List<mainpage> mdata;
private mainpageAdapter mAdapter;
private View mView;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_find, container, false);
return mView;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initData();
initListener();
mlist = (RecyclerView) this.getActivity().findViewById(R.id.recycler_view_find);
//设置recycle的样式
LinearLayoutManager layoutManager=new LinearLayoutManager(getActivity());
mlist.setLayoutManager(layoutManager);
//创建适配器
mAdapter = new mainpageAdapter(mdata);
//设置到recyc里去
mlist.setAdapter(mAdapter);
}
private void initData(){
//创建数据集合
mdata = new ArrayList<>();
//创建模拟数据
for(int i = 0; i< Datas.headi.length; i++){
//创建数据对象
mainpage data=new mainpage();
data.userName="昵称:"+i;
data.adress="地址:"+i;
data.describe="我是第"+i+"个小动物";
data.time="时间"+i;
data.headimageId=Datas.headi[i];
data.petimageId=Datas.headi[i];
//添加到集合里
mdata.add(data);
}
}
private void initListener() {
mAdapter.setOnItemClickListener(new mainpageAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
//这里处理条目的点击事件
Toast.makeText(getActivity(),"您点击的是第"+position+"个条目",Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected int getRootViewResId() {
return R.layout.fragment_find;
}
}
适配器的代码
package com.example.adoptpet.Adapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.adoptpet.R;
import com.example.adoptpet.entiy.mainpage;
import java.util.List;
public class mainpageAdapter extends RecyclerView.Adapter<mainpageAdapter.InnerHolder> {
private final List<mainpage> mData;
private OnItemClickListener mOnItemClickListener;
public mainpageAdapter(List<mainpage> data){
this.mData=data;
}
//用于创建条目的view
@NonNull
@Override
public InnerHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//传进这个条目的界面
View view = View.inflate(parent.getContext(), R.layout.fragment_find, null);
return new InnerHolder(view);
}
//用来绑定houlder一般用来设置数据
@Override
public void onBindViewHolder(@NonNull InnerHolder holder, int position) {
//在这里设置数据
holder.setData(mData.get(position),position);
}
//返回条目个数
@Override
public int getItemCount() {
if (mData != null) {
return mData.size();
}
return 0;
}
public void setOnItemClickListener(OnItemClickListener listener) {
//设置一个监听其实就是设置一个接口,一个回调的接口
this.mOnItemClickListener=listener;
}
/*
编写一个回调的步骤
1.创建这个接口
2.定义接口的内部方法
3.提供设置接口(其实是外部实现)
4.接口方法的调用
*/
public interface OnItemClickListener{
void onItemClick(int position);
}
public class InnerHolder extends RecyclerView.ViewHolder {
private TextView mUserName;
private TextView mTime;
private TextView mAddress;
private TextView mDedcribe;
private ImageView mHeadimageId;
private ImageView mPetimageId;
private int mPosotion;
public InnerHolder(@NonNull View itemView) {
super(itemView);
//找到条目的控件
mUserName = (TextView) itemView.findViewById(R.id.usernametext);
mTime = (TextView)itemView.findViewById(R.id.timetext);
mAddress = (TextView)itemView.findViewById(R.id.adresstext);
mDedcribe = (TextView)itemView.findViewById(R.id.describetext);
mHeadimageId = (ImageView) itemView.findViewById(R.id.headimageview);
mPetimageId = (ImageView)itemView.findViewById(R.id.petimageview);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(mPosotion);
}
}
});
}
//这个方法用于设置数据
public void setData(mainpage mainpage,int position) {
this.mPosotion = position;
mUserName.setText(mainpage.userName);
mTime.setText(mainpage.time);
mAddress.setText(mainpage.adress);
mDedcribe.setText(mainpage.describe);
mHeadimageId.setImageResource(mainpage.headimageId);
mPetimageId.setImageResource(mainpage.petimageId);
}
}
}
错误提示

您的每一个用心回答,都会让这个世界变得更美好一些!