0
タブ2は、クライアントの現在の時刻と日付が近づくほどアイテムを表示する必要があります。reminderTimeとreminderDateはすでにFirebaseデータベースにフィードされています。クライアントの時間と日付から近づく順にリサイクルビューのアイテムを取得する最善の方法です(上のネイバーメント)。Firebase Recycler Viewのアイテムをクライアントの現在時刻との近さに応じて並べ替える方法
ここに私の
タブ2コード
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Returning the layout file after inflating
//Change R.layout.tab1 in you classes
View v = inflater.inflate(R.layout.tab2, container, false);
final FirebaseUser user =FirebaseAuth.getInstance().getCurrentUser();
mDatabase = FirebaseDatabase.getInstance().getReference();
//userID being receiverUID in database
Query query = mDatabase.child("reminders").orderByChild("receiverUID_status").equalTo(MainActivity.userID+"_"+"active");
//Setting size of recycler view as constant
recyclerView = (RecyclerView) v.findViewById(R.id.my_recycler_view2);
recyclerView.setHasFixedSize(true);
//Setting Linear Layout
layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
adapter = new FirebaseRecyclerAdapter<Reminder,ReminderHolder>(
Reminder.class,
R.layout.cards_layout,
ReminderHolder.class,
query){
@Override
protected void populateViewHolder(ReminderHolder holder, Reminder reminder, final int position) {
//Setting the name,message and time
holder.setName(reminder.getSenderName());
holder.setMessage(reminder.getReminderMessage());
holder.button_reject.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
adapter.getRef(position).child("receiverUID_status").setValue("reject");
adapter.notifyItemRemoved(position);
}
});
}
};
return v
}
ReminderHolderクラス
public class ReminderHolder extends RecyclerView.ViewHolder {
private final TextView mNameField;
private final TextView mMessageField;
public final Button button_reject;
public ReminderHolder(View itemView) {
super(itemView);
mNameField = (TextView) itemView.findViewById(R.id.name);
mMessageField = (TextView) itemView.findViewById(R.id.text);
button_reject=(Button)itemView.findViewById(R.id.button_reject);
}
private void rejectreminder(int adapterPosition) {
}
public void setName(String name) {
mNameField.setText(name);
}
public void setMessage(String message) {
mMessageField.setText(message);
}
}
リマインダークラス
public class Reminder {
public String reminderMessage;
public String senderUID;
public String senderName;
public String receiverUID;
public String receiverName;
public String reminderTime;
public String timestamp;
public String status;
public String receiverUID_status;
public Reminder() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public Reminder(String reminderMessage,String senderUID,String senderName,String receiverUID,String receiverName,String reminderTime,String timestamp,String status,String receiverUID_status) {
this.reminderMessage = reminderMessage;
this.senderUID =senderUID ;
this.senderName=senderName;
this.receiverUID=receiverUID;
this.receiverName=receiverName;
this.reminderTime=reminderTime;
this.timestamp=timestamp;
this.status=status;
this.receiverUID_status=receiverUID_status;
}
タイムスタンプと私はfirebaseで複数のクエリを行うことはできません、あなたが詳細を理解し、私がよりよく理解できるようにする場合 –
私は自分のデータベースを変更し、タイムスタンプで注文して問題を解決する必要があった –