gpt4 book ai didi

java - Firebase RecyclerView - 如何只显示过滤后的数据?

转载 作者:行者123 更新时间:2023-11-30 00:07:07 25 4
gpt4 key购买 nike

目前我正在回收站 View 中展示我所有的“任务”,同时拥有具有“状态”属性的“任务”模型。

我只想显示状态为“可用”的任务。

我该怎么做?我试过使用 orderByChild 和 equalTo,但很可能我遗漏了一些东西。

这是相关 fragment 的代码:-

    /**
* 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 个已使用(我不想展示)。 db

最佳答案

试试这个:

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

的所有状态

关于java - Firebase RecyclerView - 如何只显示过滤后的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48774169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com