- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
//这是我的回收器 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/
我更新了我的 targetSdkVersion从 28 到 30,我注意到 getAdapterPosition()已弃用(我不确定何时发生)。 在 documentation ,他们说: This
This question already has answers here: What is a NullPointerException, and how do I fix it? (12个答案)
在我的新 Android 项目中,当我想获取 RecyclerView 中的当前位置时,我遇到了以下问题: Cannot resolve method 'getAdapterPosition()' 在
这个问题在这里已经有了答案: getAdapterPosition() is deprecated (1 个回答) 关闭 2 年前。 Android studio 给我一个逐渐减弱的 getAdapt
我已尽力理解围绕这一问题的问题。我正在创建一个函数,其中涉及编辑 recyclerview 的内容(项目)。它在编辑一行时工作正常,但在 recyclerview 中编辑另一行时抛出 ArrayInd
我最近升级到 Android Studio 2.3,但找不到 getAdapterPosition (RecyclerView)。我在网上看到,原因是支持库版本。但我仍然不确定如何解决它。我的 sup
getAdapterPosition() 和 getLayoutPosition 有什么区别? https://proandroiddev.com/difference-between-positio
我正在使用 RecyclerView 显示 mp3 歌曲列表。现在问题出在我尝试删除歌曲时。这首歌已成功删除,但该项目仍保留在 RecyclerView 中,我认为它会重新创建自己,实际上我不明白它是
出于某种原因,我无法使用 holder.getAdapterPosition(),因为它总是返回 -1,但 holder.getLayoutPosition() 返回一个很好的位置。 我的 onCre
这是对 this post 的一种跟进或补充.我正在尝试获取某个项目在我的 RecyclerView 中的位置,但我尝试过的所有方法都没有奏效。 我在我的 PersonViewHolder 构造函数中
我正在尝试在我的 ViewHolder 类中显示 AlertDialog,单击接受按钮后,我将使用 getAdapterPosition 获取模型项> 从项目列表中,但在 Fabric Crashly
我遇到了这个问题:AdapterPosition 永远不会改变,当我单击回收器 View 中的某个项目时,它始终为 -1。 public class RecyclerMapAdapter extend
这个问题在这里已经有了答案: Lint error "Do not treat position as fixed; only use immediately..." (1 个回答) 关闭 6 年前
我的 RecyclerView 上的每个项目都有一个具有三种状态的按钮:OPEN、LOADING 和 CLOSED。 最初所有按钮都处于打开状态。单击按钮时,状态更改为 LOADING 并在后台执行网
在许多问题中,人们说“在 onCreateViewHolder 中调用 OnClickListener。您不需要在 onBindViewHolder 中调用 OnClickListener” @Ove
由于新的支持库版本 (22.x),RecyclerView.ViewHolder 类的 getPosition() 方法已被弃用,以代替话题。我并没有真正从阅读文档中得到区别。有人可以用外行的话解释一
我正在使用 Retrofit 来获取 json,并将其放入 Room 数据库中。然后,我使用 recyclerview 来显示数据。但我第一次遇到问题,当 getadApterPositoin() 返
我真的不知道为什么我不能在我的类中使用 getLayoutPosition(); 或 getAdapterPosition(); 方法。 class MyViewHolder extends
我尝试实现最佳实践来处理 onclick在适配器中,但我遇到了问题 IndexOutOfBoundException什么时候getAdapterPostition里面onCreateViewHolde
我正在尝试在 recyclerView adapter 中的项目上添加一个 OnClickListner 其余功能与 holder 配合良好.getAdapterPosition() 但是当我尝试在其
我是一名优秀的程序员,十分优秀!