gpt4 book ai didi

java - Android RecyclerView :java. lang.NullPointerException : CartRecyclerAdapter$CustomViewHolder. getAdapterPosition()' 在空对象引用上

转载 作者:行者123 更新时间:2023-12-01 09:14:54 25 4
gpt4 key购买 nike

//这是我的回收器 View 代码,错误是 Android RecyclerView:java.lang.NullPointerException: CartRecyclerAdapter$CustomViewHolder.getAdapterPosition()' on a null object reference

 public class CartRecyclerAdapter extends RecyclerView.Adapter<CartRecyclerAdapter.CustomViewHolder> {
//this is declaration declaration of variables
private List<Cart> feedItemList;
private Context mContext;
private List<Cart> mDataset;
List<Cart> list = Collections.emptyList();
public CartRecyclerAdapter(Context context, List<Cart> feedItemList) {
this.feedItemList = feedItemList;
this.mContext = context;
}

@Override
public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cart_card, null);

CustomViewHolder viewHolder = new CustomViewHolder(view);
return viewHolder;
}

@Override
public void onBindViewHolder(final CustomViewHolder customViewHolder, int i) {
final Cart feedItem = feedItemList.get(i);

if (customViewHolder.mealTitle!= null) {
customViewHolder.mealTitle.setText(feedItem.getMeal_title());
}
if (customViewHolder.mealPrice!= null) {
customViewHolder.mealPrice.setText(feedItem.getMeal_quanitity());
}
if (customViewHolder.mealQuantity!= null) {
customViewHolder.mealQuantity.setText(feedItem.getMeal_price());
}

//错误来自这里

                    View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
CustomViewHolder holder = (CustomViewHolder) view.getTag();
int position = holder.getAdapterPosition();
//check here This is where the error os coming from

String numbers=feedItemList.get(position).toString();

feedItemList.remove(numbers);


}
};

customViewHolder.delete.setOnClickListener(clickListener);



customViewHolder.mealTitle.setTag(customViewHolder);
customViewHolder.mealPrice.setTag(customViewHolder);
customViewHolder.mealQuantity.setTag(customViewHolder);
setAnimation(customViewHolder, i);


}
//Method to remove but I don't know how to initialize.

public void removeAt(int position) {
mDataset.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position,mDataset.size());
}
@Override
public int getItemCount() {
return (null != feedItemList ? feedItemList.size() : 0);
}

public class CustomViewHolder extends RecyclerView.ViewHolder {
protected CardView t;
protected ImageView thumbnail;
protected TextView mealTitle;
protected ImageView delete;
protected TextView mealPrice;
protected TextView mealQuantity;
public CustomViewHolder(View v) {
super(v);
t = (CardView) v.findViewById(R.id.card_view);
thumbnail = (ImageView) v.findViewById(R.id.thumbnail);
mealTitle = (TextView)v.findViewById( R.id.meal_title );
delete = (ImageView)v.findViewById( R.id.delete );
mealPrice = (TextView)v.findViewById( R.id.meal_price );
mealQuantity = (TextView)v.findViewById( R.id.meal_quantity );
}
}
}

最佳答案

您收到空指针异常,因为此行 CustomViewHolderholder = (CustomViewHolder) view.getTag(); 给出了 null。因为 view.getTag() 为 null。这可能是因为在调用 onClickListener 之前您没有使用 view.setTag() 为 View 设置标签。

关于java - Android RecyclerView :java. lang.NullPointerException : CartRecyclerAdapter$CustomViewHolder. getAdapterPosition()' 在空对象引用上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40629952/

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