![](/img/trans.png)
[英]Show data from Firebase in Recyclerview, filtered on username - How to?
[英]Firebase RecyclerView - How to present filtered data only?
目前,我正在回收商視圖中顯示我所有的“任務”,同時具有“狀態”屬性的“任務”模型。
我只想顯示狀態為“可用”的任務。
我該怎么做? 我試過使用 orderByChild 和 equalTo 但可能我遺漏了一些東西。
這是相關片段的代碼:-
/**
* A simple {@link Fragment} subclass.
*/
public class PendingFragment_User extends Fragment {
private String TAG = "dDEBUG";
private RecyclerView mPendingList;
private DatabaseReference mMissionsDb;
private FirebaseAuth mAuth;
private String mCurrent_user_id;
private View mMainView;
public PendingFragment_User() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mMainView = inflater.inflate(R.layout.fragment_pending_user, container, false);
mPendingList = (RecyclerView)mMainView.findViewById(R.id.pending_recycler_user);
mAuth = FirebaseAuth.getInstance();
mCurrent_user_id = mAuth.getCurrentUser().getUid();
mMissionsDb = FirebaseDatabase.getInstance().getReference().child("Missions").child(mCurrent_user_id);
// mMissionsDb.keepSynced(true);
mPendingList.setHasFixedSize(true);
mPendingList.setLayoutManager(new LinearLayoutManager(getContext()));
// Inflate the layout for this fragment
return mMainView;
}
@Override
public void onStart() {
super.onStart();
FirebaseRecyclerAdapter<Mission, MissionsViewHolder> firebaseMissionsUserRecyclerAdapter = new FirebaseRecyclerAdapter<Mission, MissionsViewHolder>(
Mission.class,
R.layout.missions_single_layout,
MissionsViewHolder.class,
mMissionsDb
) {
@Override
protected void populateViewHolder(MissionsViewHolder missionViewHolder, Mission missionModel, int missionPosition) {
// Log.d(TAG, "inside populateViewHolder" + missionModel.getName() + " , " + missionModel.getDescription());
missionViewHolder.setMissionName(missionModel.getName());
missionViewHolder.setMissionStatus(missionModel.getStatus());
}
};
mPendingList.setAdapter(firebaseMissionsUserRecyclerAdapter);
}
public static class MissionsViewHolder extends RecyclerView.ViewHolder {
View mView;
public MissionsViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setMissionName(String name){
TextView mMissionNameView = mView.findViewById(R.id.mission_single_name);
mMissionNameView.setText(name);
}
public void setMissionStatus(String status){
TextView mMissionStatusView = mView.findViewById(R.id.mission_single_status);
mMissionStatusView.setText(status);
}
}
}
任務模型字段:
public class Mission {
private String username;
private String user_uid;
private String name;
private String description;
private String x;
private String y;
private String status;
}
數據庫截圖:同一個用戶有3個任務。 每個任務都有唯一的 uuid。 兩個是“可用”(我想顯示的)和 1 個被占用(我不想顯示)。
嘗試這個:
mMissionsDb = FirebaseDatabase.getInstance().getReference().child("Missions").child(mCurrent_user_id);
Query queries=mMissionsDb.orderByChild("status").equalTo("Available");
因為你有:
Missions
userid
randomid
key:values
status:Available <------------------- this will be in the result of the query
randomid
key:values
status:Taken
randomid
key:values
status:Available <---------------------------- also this
沒有其他方法可以獲得等於Available
所有狀態
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.