猿问

E/UncaughtException: java.lang.ArrayIndex

因此,我正在创建一个习惯跟踪器,每次您选中 viewHolder 上的复选框时都会添加一个值,我遇到的问题是,当我在列表中有 6 个或更多习惯时,复选框无法正常工作(他们开始随机检查订购)再给我上面的错误。


我在我的回收器适配器上使用它:


    public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position){

        holder.nombre.setText(mHabitosList.get(position).getNombre());



          FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();

          mDatabaseReference = mDatabase.getReference("Habitos");

          FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

          if(user != null) {

              userId = user.getUid();

              habitosReference = mDatabaseReference.child(userId);


              habitosReference.child(mHabitosList.get(holder.getAdapterPosition()).getHabitosId()).addValueEventListener(new ValueEventListener() {

                  @Override

                  public void onDataChange(DataSnapshot dataSnapshot) {

                        Habitos habitos = dataSnapshot.getValue(Habitos.class);

                        if(habitos != null) {

                            updateHabitosTotal[position] = habitos.getTotal();

                            checkBox1 = habitos.isCheckbox1();

                            checkBox2 = habitos.isCheckbox2();

                            checkBox3 = habitos.isCheckbox3();

                            checkBox4 = habitos.isCheckbox4();

                            checkBox5 = habitos.isCheckbox5();

                            checkListeners(holder, position);


                        }


                  }


                  @Override

                  public void onCancelled(DatabaseError databaseError) {


                  }

              });

    }  


     

我为代码转储道歉......任何形式的帮助将不胜感激!(:



临摹微笑
浏览 140回答 2
2回答

繁星点点滴滴

它已经在文档中提到getAdapterPosition()可以返回 -1 或者RecyclerView.NO_POSITION如果项目已从适配器中移除。RecyclerView.Adapter.notifyDataSetChanged() 在最后一次布局传递之后被调用。在ViewHolder已经被回收。所以为了避免它,你应该总是检查getAdapterPosition() != RecyclerView.NO_POSITION项目是否被点击

慕尼黑的夜晚无繁华

由于您没有提供太多代码或错误,因此我只是进行有根据的猜测。您的问题可能与位置变量有关,您需要打印您的位置。mHabitList 是 0 索引,它从 0 开始。我的猜测是位置不是,尝试从位置减去 1。
随时随地看视频慕课网APP

相关分类

Java
我要回答