从 Firebaase 检索第二个项目时出错

问题描述

这是我的第一个 android 应用程序,我很兴奋,但我在最后一个函数中遇到了错误。可以检索第一个数据,但是当我从 firebase 数据库检索第二个数据时出现错误 "java.lang.indexoutofboundsexception: Index: 1,Size 1 at java.util.ArrrayList.get()"

这是我的程序

//start here
DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("Users")
        .child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child("Wishlist");

myRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot snapshot) {
        List<String> wishlist_item = new ArrayList<String>();
        for (DataSnapshot postSnapshot: snapshot.getChildren()) {
            String data = postSnapshot.getValue(String.class);
            wishlist_item.add(data);
        }


        //list 1
        L1.setonClickListener(new View.OnClickListener() {
            String a = wishlist_item.get(0);
            @Override
            public void onClick(View view) {
                if(a.isEmpty()){
                    Toast.makeText(wish_list.this,"Empty Field",Toast.LENGTH_SHORT).show();
                }else{
                    Intent launchWish = new Intent(wish_list.this,web_view2.class);
                    launchWish.putExtra("k",a);
                    startActivity(launchWish);
                }
            }
        });
        //list 2
        L2.setonClickListener(new View.OnClickListener() {
            String b = wishlist_item.get(1);
            @Override
            public void onClick(View view) {
                if(b.isEmpty()){
                    Toast.makeText(wish_list.this,b);
                    startActivity(launchWish);
                }
            }
        });
        //the end for 5 lists

    }
    @Override
    public void onCancelled(@NonNull DatabaseError error) {
    }
});

我只想从我的 Firebase 中检索 5 个数据。你可以在这里看到我的 firebase 表

You can see my firebase table here

我从昨天开始就一直在解决这个问题,但没有得到任何答复。我非常感谢您的帮助。

解决方法

正如您在问题中提到的,您收到以下错误:

"java.lang.IndexOutOfBoundsException: Index: 1,Size 1 at java.util.ArrrayList.get()"

因为您试图从不存在的位置的“ArrayList”中获取元素。正如我在以下参考资料中看到的:

Firebase-root -> Users -> "GRUK ... cL03" -> Wishlist

那里有两个项目,但是,错误消息非常明确地说只有一个。最有可能的是,第二个用户“T9az ... I4v2”的愿望清单,我认为是真正的登录用户,在愿望清单中包含一个项目,因此出现了错误。所以要解决这个问题,在使用之前一定要确保能找到对应索引处的元素,而不是盲目地假设某个元素总是存在。