为了账号安全,请及时绑定邮箱和手机立即绑定

RecyclerAdapater getItemCount 崩溃

RecyclerAdapater getItemCount 崩溃

千万里不及你 2021-12-10 15:11:00
我有以下问题,其中我的应用程序在进入下一个活动时不幸停止。这是罪魁祸首:   public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.RecyclerHolder> {        ArrayList<Theme> themes;        private LayoutInflater mInflater;       public RecyclerAdapter(Context context, ArrayList<Theme> themes) {            mInflater = LayoutInflater.from(context);            this.themes = themes;       }        public class RecyclerHolder extends RecyclerView.ViewHolder {            ImageView imageView;            TextView name,price;            public RecyclerHolder(View view) {                super(view);                imageView = (ImageView)view.findViewById(R.id.demo);                name = (TextView)view.findViewById(R.id.name);                price = (TextView)view.findViewById(R.id.price);            }        }        @NonNull        @Override        public RecyclerHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {            View view = mInflater.inflate(R.layout.recycler_list, viewGroup, false);            return new RecyclerHolder(view);        }        @Override        public void onBindViewHolder(@NonNull RecyclerHolder viewHolder, int i) {           Log.i("log", themes.get(i).getName());           viewHolder.imageView.setImageResource(themes.get(i).getDrawableCover());           viewHolder.name.setText(themes.get(i).getName());           viewHolder.price.setText(themes.get(i).getPrice());        }        @Override        public int getItemCount() {           return themes.size();        }    }问题似乎出在getItemCount()方法上。当我尝试返回themes.size()应用程序崩溃时。当我return 0改为时,没有任何显示。这里似乎有什么问题?我是 android 新手,所以请正确解释。
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

你想检查你的数据是否null在getItemCount()方法中,这样你就可以确保你的应用程序永远不会在那里崩溃:


爪哇:


@Override

public int getItemCount() {

   return themes != null ? themes.size() : 0;

}

科特林:


override fun getItemCount(): Int = themes?.size ?: 0


查看完整回答
反对 回复 2021-12-10
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

我找到了问题所在。这里的这个是viewHolder.price.setText(themes.get(i).getPrice());我调用setText()TextView 方法并传入一个int值的罪魁祸首,这就是它抛出ResourceNotFound异常的原因。我已经通过打电话Integer.toString()感谢大家修复了它。


查看完整回答
反对 回复 2021-12-10
?
狐的传说

TA贡献1804条经验 获得超3个赞

我想也许你必须初始化你的 ArrayList。

你可以这样初始化:

    ArrayList<Theme> themes = new ArrayList<Theme>();

我不是 100% 确定。但试试吧。


查看完整回答
反对 回复 2021-12-10
  • 3 回答
  • 0 关注
  • 230 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号