![](/img/trans.png)
[英]How to retrieve values from a node in firebase and display in a recycler view?
[英]Retrieve certain key from firebase in recycler view
我存储了一个键的字符串数组,并且我有一个显示数据的回收器视图,我想在回收器视图中仅显示该数组的键。 game.class 有 getter 和 setter,我教过添加值事件侦听器,迭代,如果数组中是快照的键,我添加它,但我不知道把它放在哪里; 谢谢
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_favoritas, container, false);
recyclerView = (RecyclerView) rootView.findViewById(R.id.recycler);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
prefs= this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
mdatabase= FirebaseDatabase.getInstance().getReference().child("Partidas");
return rootView;
}
@Override
public void onStart() {
super.onStart();
FirebaseRecyclerAdapter<Game,GameViewHolder> firebaseRecyclerAdapter=new FirebaseRecyclerAdapter<Game, GameViewHolder>(
Game.class,
R.layout.row,
GameViewHolder.class,
mdatabase
) {
@Override
protected void populateViewHolder(GameViewHolder viewHolder, Game model, final int position) {
viewHolder.setTitle(model.getGame_name());
viewHolder.setJugado(model.getJugado());
viewHolder.setCreator(model.getCreator_name())
});
}
};
recyclerView.setAdapter(firebaseRecyclerAdapter);
}
public static class GameViewHolder extends RecyclerView.ViewHolder {
View mview;
public GameViewHolder(View itemView) {
super(itemView);
mview=itemView;
}
public void setTitle(String title){
TextView title_txt=(TextView)mview.findViewById(R.id.gametitle);
title_txt.setText(title);
}
public void setCreator(String name){
TextView name_txt=(TextView)mview.findViewById(R.id.gamecreator);
name_txt.setText(name);
}
public void 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());
}
});
您可以使用 getRef(position) 获取 ref,然后使用 ref.getKey() 获取特定视图的键;
@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())
});
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.