Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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 在回收器视图中从firebase检索特定密钥_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 在回收器视图中从firebase检索特定密钥

Java 在回收器视图中从firebase检索特定密钥,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我存储了一个键的字符串数组,我有一个recycler视图,我在其中显示数据,我想在recycler视图中只显示该数组的键。 game.class有getter和setter,我教过如何添加值事件侦听器,迭代,如果数组中有快照的键,我会添加它,但我不知道放在哪里; 谢谢 @覆盖 创建视图上的公共视图(布局、充气机、视图组容器、, Bundle savedInstanceState){ 视图根视图=充气机。充气(R.layout.fragment\u favoritas,container,fals

我存储了一个键的字符串数组,我有一个recycler视图,我在其中显示数据,我想在recycler视图中只显示该数组的键。 game.class有getter和setter,我教过如何添加值事件侦听器,迭代,如果数组中有快照的键,我会添加它,但我不知道放在哪里; 谢谢

@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment\u favoritas,container,false);
recyclerView=(recyclerView)rootView.findViewById(R.id.recycler);
recyclerView.setHasFixedSize(true);
setLayoutManager(新的LinearLayoutManager(getActivity());
prefs=this.getActivity().getSharedReferences(“pref”,Context.MODE\u PRIVATE);
mdatabase=FirebaseDatabase.getInstance().getReference().child(“Partidas”);
返回rootView;
}
@凌驾
public void onStart(){
super.onStart();
FirebaseRecyclerAdapter FirebaseRecyclerAdapter=新的FirebaseRecyclerAdapter(
游戏类,
R.layout.row,
GameViewHolder.class,
mdatabase
) {
@凌驾
受保护的void populateViewHolder(游戏视图holder、游戏模型、最终int位置){
viewHolder.setTitle(model.getGame_name());
setJugado(model.getJugado());
viewHolder.setCreator(model.getCreator\u name())
});
}
};
recyclerView.setAdapter(firebaseRecyclerAdapter);
}
公共静态类GameViewHolder扩展了RecyclerView.ViewHolder{
视图视图;
公共游戏视图持有者(查看项目视图){
超级(项目视图);
mview=项目视图;
}
公共无效集合标题(字符串标题){
TextView title_txt=(TextView)mview.findviewbyd(R.id.gametitle);
title_txt.setText(title);
}
public void setCreator(字符串名称){
TextView name_txt=(TextView)mview.findviewbyd(R.id.gamecreator);
name_txt.setText(名称);
}
公共无效setJugado(int jugado){
TextView jugado_txt=(TextView)mview.findViewById(R.id.gametimes);
jugado_txt.setText(String.valueOf(jugado));
}
}

}

用于检索数据如果您有密钥,则可以在每个引用上使用addListenerForSingleValueEvent并相应地更新数据

DatabaseReference ref = <YourRef>.child(<YourKeys>.get(position));
            ref.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                }

                @Override
                public void onCancelled(DatabaseError firebaseError) {
                    Log.e(TAG, "Unable to fetch data " + firebaseError.getMessage());
                }
            });

我已经有钥匙了,我的问题是如何只显示那些钥匙哦!!我以为你在说从FirebaseRecyclerAdapter检索钥匙。等等,我会用keys@TincoDeSimone我已经更新了答案,请检查。我应该把它放在“填充视图持有者”方法上?是的,虽然它可能有点昂贵,但如果您想更新特定recyclerview中的数据,这是一个可行的解决方案
DatabaseReference ref = <YourRef>.child(<YourKeys>.get(position));
            ref.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                }

                @Override
                public void onCancelled(DatabaseError firebaseError) {
                    Log.e(TAG, "Unable to fetch data " + firebaseError.getMessage());
                }
            });
@Override
        protected void populateViewHolder(GameViewHolder viewHolder, Game model, final int position) {

final DatabaseReference gameRef= getRef(position);
final String postKey = gameRef.getKey();

            viewHolder.setTitle(model.getGame_name());
            viewHolder.setJugado(model.getJugado());
            viewHolder.setCreator(model.getCreator_name())
            });
        }
    };