0

表2需要显示客户当前时间和日期越来越近的项目,提醒时间和提醒日期已在Firebase数据库中提供,什么是根据客户时间和日期的接近程度,以最佳方式在回收站视图中获取物品(最接近顶部)。任何帮助将不胜感激。如何根据客户当前时间的接近程度安排Firebase Recycler视图中的项目

这里是我的 Firebase Database

标签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; 
    } 

回答

1

ÿ您首先必须将日期的存储方式更改为实际的unix时间戳或以易于排序的文本格式的日期时间。请参阅:

所以更好的格式有:

  • 1500241488157(时间戳现在)
  • 2017-07-16T23:45:05(现在排序时间)

然后,您可以查询与即将推出的项目:

Query query = ref.orderByChild("timestamp").startAt(System.currentTimeMillis()); 
query.addChildEventListener(new ChildEventListener() { 
    void onChildAdded(DataSnapshot snapshot, String previousKey) { 
    System.out.println(snapshot.getKey()+": "+snapshot.getChild("receiverName").getValue(String.class)); 
+0

我明白需要但是我已经在使用一个查询,显示具体的结果,以使用时间戳为目的,现在我想根据显示这些结果时间戳和我无法在Firebase中执行多个查询,如果您能详细说明并让我更好理解 –

+0

我需要更改我的数据库,然后通过时间戳排序解决了我的问题 –

相关问题