【发布时间】:2020-10-11 13:34:11
【问题描述】:
适配器代码
public class ButtonGroupAdp extends RecyclerView.Adapter<ButtonGroupAdp.MyViewHolder> {
List<ButtonGroup> mList;
private ItemClickListener mClickListener;
Context context;
private int screenWidth;
public ButtonGroupAdp(List<ButtonGroup> mList, Context context) {
this.mList = mList;
this.context = context;
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
screenWidth = size.x;
}
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView txtTitle;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
txtTitle = itemView.findViewById(R.id.tv_name);
}
@Override
public void onClick(View view) {
if (mClickListener != null) mClickListener.onItemClick(view, getAdapterPosition());
}
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view = layoutInflater.inflate(R.layout.list_groupname, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
ButtonGroup datum = mList.get(position);
holder.txtTitle.setText("" + datum.getGroupName());
datum.notifyAll();
}
public interface ItemClickListener {
void onItemClick(View view, int position);
}
@Override
public int getItemCount() {
return mList.size();
}
}
这是我的主要活动代码
badp = new ButtonGroupAdp(mlist, this);
mlist = new ArrayList<>();
mlist = mobexInAppDb.getAllProductList(site);
myRecyclerView.setAdapter(badp);
这是 m 从 sqlite 获取值的地方
public List<ButtonGroup> getAllProductList(String siteCode) {
List<ButtonGroup> buttonGroups = new ArrayList<>();
Cursor cursor = null;
SQLiteDatabase db = this.getWritableDatabase();
cursor = db.rawQuery("SELECT DISTINCT groupName,groupId FROM ButtonGroups where parentGroupId='"+null+"' and siteCode='"+siteCode+"'", null);
if (cursor.getCount() != 0) {
while (cursor.moveToNext()) {
ButtonGroup buttonGroup = new ButtonGroup(cursor.getString(0),cursor.getString(1));
buttonGroups.add(buttonGroup);
}
}
cursor.close();
return buttonGroups;
}
基本上我想把这些数据放在我的水平回收器视图中,触摸每个项目我应该知道哪个是点击但不知道为什么我会遇到这个错误请帮助我 这是我得到的错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mobex.inapp, PID: 17931
java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at com.mobex.inapp.Adapter.ButtonGroupAdp.getItemCount(ButtonGroupAdp.java:81)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:4044)
at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3534)
【问题讨论】:
标签: android android-studio android-fragments android-recyclerview