Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更新RecyclerView onChildChanged Firebase_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 更新RecyclerView onChildChanged Firebase

Java 更新RecyclerView onChildChanged Firebase,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在尝试更新我的recyclerview,但出现了以下错误 java.lang.ArrayIndexOutOfBoundsException:长度=12;索引=-1 帮我解释一下这个逻辑。 如果我在onChildChanged中除了Notify之外没有做任何事情,那么它将创建重复的子项好的,我得到了它 您需要两个阵列来执行此操作。 // Lists private final List<ChatModel> lIndividualChats = new ArrayList<&

我正在尝试更新我的recyclerview,但出现了以下错误

java.lang.ArrayIndexOutOfBoundsException:长度=12;索引=-1

帮我解释一下这个逻辑。 如果我在
onChildChanged
中除了
Notify
之外没有做任何事情,那么它将创建重复的
子项
好的,我得到了它

您需要两个阵列来执行此操作。

// Lists
private final List<ChatModel> lIndividualChats = new ArrayList<>();
private ArrayList<String> mKeys = new ArrayList<>();

通过使用另一个简单字符串类型的数组,您将能够访问模型数组列表的索引。

很可能是
上载的。indexOf(key)
找不到键,因此返回
-1
。很难推测为什么这是基于您共享的代码。例如,
上传是什么类型?它是如何找到一个键的索引的?@FrankvanPuffelen我正期待着你的回答:)。我已经为这项工作制定了工作方案。我需要修改此代码或发布答案?
// Lists
private final List<ChatModel> lIndividualChats = new ArrayList<>();
private ArrayList<String> mKeys = new ArrayList<>();
public void onChildAdded(@NonNull DataSnapshot dataSnapshot,
                        @Nullable String s) {

   ChatModel chatModel = dataSnapshot.getValue(ChatModel.class);
   lIndividualChats.add(chatModel);
   chatsAdapter.notifyDataSetChanged();

   String key = dataSnapshot.getKey();
   mKeys.add(key);

}

@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot,
                          @Nullable String s) {

   ChatModel chatModel = dataSnapshot.getValue(ChatModel.class);
   String key = dataSnapshot.getKey();

   int index = mKeys.indexOf(key);
   lIndividualChats.set(index,
                        chatModel);
   chatsAdapter.notifyDataSetChanged();

}