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

E/UncaughtException: java.lang.ArrayIndex

E/UncaughtException: java.lang.ArrayIndex

临摹微笑 2021-05-31 09:08:02
因此,我正在创建一个习惯跟踪器,每次您选中 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) {                  }              });    }       我为代码转储道歉......任何形式的帮助将不胜感激!(:
查看完整描述

2 回答

?
繁星点点滴滴

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

它已经在文档中提到getAdapterPosition()可以返回 -1 或者RecyclerView.NO_POSITION如果

  1. 项目已从适配器中移除。

  2. RecyclerView.Adapter.notifyDataSetChanged() 在最后一次布局传递之后被调用。

  3. ViewHolder已经被回收。

所以为了避免它,你应该总是检查getAdapterPosition() != RecyclerView.NO_POSITION项目是否被点击


查看完整回答
反对 回复 2021-06-02
?
慕尼黑的夜晚无繁华

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

由于您没有提供太多代码或错误,因此我只是进行有根据的猜测。

您的问题可能与位置变量有关,您需要打印您的位置。mHabitList 是 0 索引,它从 0 开始。我的猜测是位置不是,尝试从位置减去 1。

查看完整回答
反对 回复 2021-06-02
  • 2 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信