RecyclerAdapater getItemCount 崩溃

我有以下问题,其中我的应用程序在进入下一个活动时不幸停止。这是罪魁祸首:


   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 新手,所以请正确解释。


千万里不及你
浏览 231回答 3
3回答

红糖糍粑

你想检查你的数据是否null在getItemCount()方法中,这样你就可以确保你的应用程序永远不会在那里崩溃:爪哇:@Overridepublic int getItemCount() {&nbsp; &nbsp;return themes != null ? themes.size() : 0;}科特林:override fun getItemCount(): Int = themes?.size ?: 0

慕勒3428872

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

狐的传说

我想也许你必须初始化你的 ArrayList。你可以这样初始化:&nbsp;&nbsp;&nbsp;&nbsp;ArrayList<Theme>&nbsp;themes&nbsp;=&nbsp;new&nbsp;ArrayList<Theme>();我不是 100% 确定。但试试吧。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java