繁体   English   中英

在回收站视图中从 firebase 检索某些密钥

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM