gpt4 book ai didi

java - Android Studio 中的 Recyclerview 错误 - "null object reference"

转载 作者:行者123 更新时间:2023-12-01 16:42:48 25 4
gpt4 key购买 nike

我是 Android 新手,我刚刚搞砸了一些东西。我使用了 recycleView 模板,它工作得很好,但我想将对象的类型从字符串更改为“TagsManagerObject”,其中包含

   private String tagName;
private String gender;
private String mAgeMin;
private String mAgeMax;
private String mDistance;

从那时起我就陷入了这个错误:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.tinderapp, PID: 10921
java.lang.NullPointerException: Attempt to invoke interface method 'void com.example.tinderapp.Tags.TagsManagerAdapter$ItemClickListener.onDeleteClick(int)' on a null object reference
at com.example.tinderapp.Tags.TagsManagerAdapter$ViewHolder$1.onClick(TagsManagerAdapter.java:78)
at android.view.View.performClick(View.java:6614)
at android.view.View.performClickInternal(View.java:6587)
at android.view.View.access$3100(View.java:787)
at android.view.View$PerformClick.run(View.java:26122)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6831)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:927)

我的适配器看起来像:

public class TagsManagerAdapter extends RecyclerView.Adapter<TagsManagerAdapter.ViewHolder>{

private LayoutInflater mInflater;
private ImageView mDeleteImage;
private List<TagsManagerObject> mTagsManagerObject;
private ItemClickListener mItemClickListener;

// data is passed into the constructor
public TagsManagerAdapter(Context context,List<TagsManagerObject> TagsManagerObject) {
this.mInflater = LayoutInflater.from(context);
this.mTagsManagerObject = TagsManagerObject;
}

// inflates the row layout from xml when needed
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = mInflater.inflate(R.layout.item_tags_manager, parent, false);
return new ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
// String tag = TagsManagerObject.get(position);
holder.tagName.setText("#"+mTagsManagerObject.get(position).getTagName());
holder.gender.setText(mTagsManagerObject.get(position).getGender());
holder.distance.setText(mTagsManagerObject.get(position).getmDistance());
holder.tagAge.setText(mTagsManagerObject.get(position).getmAgeMin() + "-" + mTagsManagerObject.get(position).getmAgeMax());
}
// binds the data to the TextView in each row

// total number of rows
@Override
public int getItemCount() {
return mTagsManagerObject.size();
}

public void setClickListener(ItemClickListener mItemClickListener) {
this.mItemClickListener = mItemClickListener;
}


// stores and recycles views as they are scrolled off screen
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView tagName,gender,tagAge,distance;
ViewHolder(View itemView) {
super(itemView);
tagName= itemView.findViewById(R.id.tag);
gender = itemView.findViewById(R.id.tag_gender);
distance = itemView.findViewById(R.id.tag_distance);
tagAge = itemView.findViewById(R.id.tag_age);

mDeleteImage = itemView.findViewById(R.id.tag_delete);
itemView.setOnClickListener(this);


mDeleteImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

int position = getAdapterPosition();
if(position!=RecyclerView.NO_POSITION){
mItemClickListener.onDeleteClick(position); <<--- HERE IS THE ERROR
}
}
});
}

@Override
public void onClick(View view) {
if (mItemClickListener != null) mItemClickListener.onItemClick(view, getAdapterPosition());
}


}

// convenience method for getting data at click position
String getItem(int id) {
return mTagsManagerObject.get(id).toString();
}

// allows clicks events to be caught

// parent activity will implement this method to respond to click events
public interface ItemClickListener {
void onItemClick(View view, int position);
void onDeleteClick(int position);
}

}

所以当我点击删除按钮时它崩溃了。有谁知道为什么?谢谢。

最佳答案

当您对 null 对象调用 onDeleteClick(position) 时,您会遇到此异常,因此您必须在调用此方法之前为 mItemClickListener 设置一个值onDeleteClick(位置)

在您的代码中,您必须在使用此适配器的 Activity/fragment 中调用适配器的 setClickListener()

关于java - Android Studio 中的 Recyclerview 错误 - "null object reference",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61830784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com