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 如何从数组列表中正确检索第一个操作的数据_Java_Android_Database_Firebase_Android Studio - Fatal编程技术网

Java 如何从数组列表中正确检索第一个操作的数据

Java 如何从数组列表中正确检索第一个操作的数据,java,android,database,firebase,android-studio,Java,Android,Database,Firebase,Android Studio,数组列表中有5项。如果用户单击项目1,程序将显示项目1;如果用户单击项目2,程序将显示项目2,依此类推。问题是,除非没有从程序中检索到数据,否则用户第一次操作时必须单击按钮两次。我不知道为什么。我不知道是哪一部分导致了这个问题。如果你能指出问题的原因,我真希望你能帮忙 这是我的密码 //start here to retrieve fav books DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().c

数组列表中有5项。如果用户单击项目1,程序将显示项目1;如果用户单击项目2,程序将显示项目2,依此类推。问题是,除非没有从程序中检索到数据,否则用户第一次操作时必须单击按钮两次。我不知道为什么。我不知道是哪一部分导致了这个问题。如果你能指出问题的原因,我真希望你能帮忙

这是我的密码

//start here to retrieve fav books
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()) {
            wishlist_item.add(postSnapshot.getValue().toString());
        }
        //list 1
            L1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if(wishlist_item.size()>=1){
                        Intent launchWish = new Intent(wish_list.this, wishlist_webview.class);
                        String a = wishlist_item.get(0);
                        launchWish.putExtra("k",a);
                        startActivity(launchWish);
                        //animation
                        overridePendingTransition(R.anim.slide_up_in,R.anim.slide_up_out);
                    }else{
                        Toast.makeText(wish_list.this, "Favourite 1 is empty", Toast.LENGTH_SHORT).show();
                    }
                }
            });
        //list 2
        L2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(wishlist_item.size()>=2){
                    Intent launchWish = new Intent(wish_list.this, wishlist_webview.class);
                    String b = wishlist_item.get(1);
                    launchWish.putExtra("k",b);
                    startActivity(launchWish);
                    //animation
                    overridePendingTransition(R.anim.slide_up_in,R.anim.slide_up_out);
                }else{
                    Toast.makeText(wish_list.this, "Favourite 2 is empty", Toast.LENGTH_SHORT).show();
                }
            }
        });
        //list 3
        L3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(wishlist_item.size()>=3){
                    Intent launchWish = new Intent(wish_list.this, wishlist_webview.class);
                    String c = wishlist_item.get(2);
                    launchWish.putExtra("k",c);
                    startActivity(launchWish);
                    //animation
                    overridePendingTransition(R.anim.slide_up_in,R.anim.slide_up_out);
                }else{
                    Toast.makeText(wish_list.this, "Favourite 3 is empty", Toast.LENGTH_SHORT).show();
                }
            }
        });
        //list 4
        L4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(wishlist_item.size()>=4){
                    Intent launchWish = new Intent(wish_list.this, wishlist_webview.class);
                    String d = wishlist_item.get(3);
                    launchWish.putExtra("k",d);
                    startActivity(launchWish);
                    //animation
                    overridePendingTransition(R.anim.slide_up_in,R.anim.slide_up_out);
                }else{
                    Toast.makeText(wish_list.this, "Favourite 4 is empty", Toast.LENGTH_SHORT).show();
                }
            }
        });
        //list 5
        L5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(wishlist_item.size()>=5){
                    Intent launchWish = new Intent(wish_list.this, wishlist_webview.class);
                    String e = wishlist_item.get(4);
                    launchWish.putExtra("k",e);
                    startActivity(launchWish);
                    //animation
                    overridePendingTransition(R.anim.slide_up_in,R.anim.slide_up_out);
                }else{
                    Toast.makeText(wish_list.this, "Favourite 5 is empty", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
    @Override
    public void onCancelled(@NonNull DatabaseError error) {
    }
});
//从这里开始检索fav书籍
DatabaseReference myRef=FirebaseDatabase.getInstance().getReference().child(“用户”)
.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child(“愿望列表”);
myRef.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot snapshot snapshot){
List wishlist_item=new ArrayList();
对于(DataSnapshot postSnapshot:snapshot.getChildren()){
wishlist_item.add(postSnapshot.getValue().toString());
}
//清单1
L1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
如果(愿望列表_item.size()>=1){
Intent launchWish=newintent(wish_list.this,wishlist_webview.class);
字符串a=愿望列表\u项.get(0);
launchWish.putExtra(“k”,a);
startActivity(launchWish);
//动画
覆盖转换(R.anim.向上滑入,R.anim.向上滑出);
}否则{
Toast.makeText(wish_list.this,“收藏夹1为空”,Toast.LENGTH_SHORT.show();
}
}
});
//清单2
L2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
如果(愿望列表_item.size()>=2){
Intent launchWish=newintent(wish_list.this,wishlist_webview.class);
字符串b=愿望列表_item.get(1);
launchWish.putExtra(“k”,b);
startActivity(launchWish);
//动画
覆盖转换(R.anim.向上滑入,R.anim.向上滑出);
}否则{
Toast.makeText(wish_list.this,“收藏夹2为空”,Toast.LENGTH_SHORT.show();
}
}
});
//清单3
L3.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
如果(愿望列表_item.size()>=3){
Intent launchWish=newintent(wish_list.this,wishlist_webview.class);
字符串c=愿望列表\u item.get(2);
launchWish.putExtra(“k”,c);
startActivity(launchWish);
//动画
覆盖转换(R.anim.向上滑入,R.anim.向上滑出);
}否则{
Toast.makeText(wish_list.this,“收藏夹3为空”,Toast.LENGTH_SHORT.show();
}
}
});
//清单4
L4.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
如果(愿望列表_item.size()>=4){
Intent launchWish=newintent(wish_list.this,wishlist_webview.class);
字符串d=愿望列表项.get(3);
launchWish.putExtra(“k”,d);
startActivity(launchWish);
//动画
覆盖转换(R.anim.向上滑入,R.anim.向上滑出);
}否则{
Toast.makeText(wish_list.this,“收藏夹4为空”,Toast.LENGTH_SHORT.show();
}
}
});
//清单5
L5.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
如果(愿望列表_item.size()>=5){
Intent launchWish=newintent(wish_list.this,wishlist_webview.class);
字符串e=愿望列表_item.get(4);
launchWish.putExtra(“k”,e);
startActivity(launchWish);
//动画
覆盖转换(R.anim.向上滑入,R.anim.向上滑出);
}否则{
Toast.makeText(wish_list.this,“收藏夹5为空”,Toast.LENGTH_SHORT.show();
}
}
});
}
@凌驾
已取消公共void(@NonNull DatabaseError){
}
});

我猜默认情况下,
L1..L5
范围内的所有按钮都是可见的,
FirebaseDatabase
调用是异步的,这意味着它从远程获取数据,IO需要时间,因此需要一些时间才能得到响应,我的最佳选择是显示某种
加载状态,首先隐藏按钮,然后在设置
单击监听器
按钮时,使其
可见
,我想默认情况下,
L1..L5
范围内的所有按钮都是
可见的,而
FirebaseDatabase
调用是异步的,这意味着它正在从远程获取数据,IO需要时间,因此获取响应需要一些时间,我的最佳选择是显示某种类型的
加载
状态,首先隐藏按钮,然后在设置
单击侦听器
按钮时使其可见

我想您需要将按钮的
onClickListeners
设置在
onDataChange
方法之外,因为每当数据发生更改时,都会触发数据更改。您还需要制作
列表愿望列表项目