根据时间戳从火力点数据库获取数据

问题描述:

{ 
    "YoZSiyACIqSBNXU7XKv56olKOv92": 
    { 
     "-KpJVrAUg9yCPNptU-jY": 
     { 
      "cmt": "hello", 
      "ids": "-KpJVrAIVocWckK-vEd2", 
      "imgid": "-KpJT3Ygd8U3yf9nN-Yr", 
      "timestamp": "1500361488354", 
      "userid": "[email protected]" 
     }, 
     "-KpoR8S99tMm1fDmlwaR": 
     { 
      "cmt": "really", 
      "ids": "-KpoR8S99tMm1fDmlwaQ", 
      "imgid": "-KpJT3Ygd8U3yf9nN-Y, 
      "timestamp": "1500897125323", 
      "userid": "[email protected]" 
     } 
    }, 
    "pTMeNLkIHqPmFOCPQcK2yjImdmi2": 
    { 
     "-KpU8HxLfohEtXIGJzi9": 
     { 
      "cmt": "hie", 
      "ids": "-KpU8HxLfohEtXIGJzi8", 
      "imgid": "-KpJT3Ygd8U3yf9nN-Yr", 
      "timestamp": "1500539860639", 
      "userid": "[email protected]" 
     }, 

     "-KpoQo6615Y-U-DQ_Le1": 
     { 
      "cmt": "nice", 
      "ids": "-KpoQo6-flNhGxZd4V19", 
      "imgid": "-KpJT3Ygd8U3yf9nN-Yr", 
      "timestamp": "1500897037891", 
      "userid": "[email protected]" 
     } 
    } 
} 

如何根据时间戳检索数据,以便在回收站中首先显示具有最新时间戳的数据。根据时间戳从火力点数据库获取数据

我的代码是:

myref.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      list = new ArrayList<>(); 
      for(DataSnapshot dataSnapshot1 :dataSnapshot.getChildren()){ 
       for(DataSnapshot data2 :dataSnapshot1.getChildren()){ 

        Comment userdetails = data2.getValue(Comment.class); 
        final CommentData listdata = new CommentData(); 
        final String cmt=userdetails.getCmt(); 
        final String user = userdetails.getUserid(); 
        final String cmtid = userdetails.getIds(); 


           listdata.setNos(String.valueOf(c)); 
           listdata.setCmt(cmt); 
           listdata.setUserid(user); 
           listdata.setComid(cmtid); 


           list.add(listdata); 



          RecyclerCommentAdapter recycler = new RecyclerCommentAdapter(list); 
          RecyclerView.LayoutManager layoutmanager = new LinearLayoutManager(getApplicationContext()); 
          recyclerview.setLayoutManager(layoutmanager); 
          recyclerview.setItemAnimator(new DefaultItemAnimator()); 
          recyclerview.setAdapter(recycler); 
         } 


      } 



     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

请告诉我怎么能在第一显示器上recyclerview最新数据基于从火力数据库的时间戳。 这是CommentData类:

public class CommentData { 
    String cmt; 
    String userid; 
    String comid; 
    String nos; 

    public String getNos() { 
     return nos; 
    } 

    public void setNos(String nos) { 
     this.nos = nos; 
    } 

    public String getComid() { 
     return comid; 
    } 

    public void setComid(String comid) { 
     this.comid = comid; 
    } 


    public String getCmt() { 
     return cmt; 
    } 


    public void setCmt(String cmt) { 
     this.cmt = cmt; 
    } 

    public String getUserid() { 
     return userid; 
    } 

    public void setUserid(String userid) { 
     this.userid = userid; 
    } 


} 
+0

做你从firebase获取列表数据列表? – akhilesh0707

+0

你需要在时间戳字段上对你的列表进行排序 – akhilesh0707

+0

你问的是如何通过**降序**时间戳检索项目。如果是这样,请参阅https://*.com/questions/34156996/firebase-data-desc-sorting-in-android/34158197#34158197 –

Collections.sort(list, new Comparator<CommentData>() { 
           @Override 
           public int compare(CommentData o1, CommentData o2) { 
            return Long.compare(Long.parseLong(o2.time), 
              Long.parseLong(o1.time)); 
           } 
          }); 

该解决方案是相当棘手的,您需要在推的重点改为时间戳* -1

例如:

"YoZSiyACIqSBNXU7XKv56olKOv92": 
{ 

    "-1500897125323": 
    { 
     "cmt": "really", 
     "ids": "-KpoR8S99tMm1fDmlwaQ", 
     "imgid": "-KpJT3Ygd8U3yf9nN-Y, 
     "timestamp": "1500897125323", 
     "userid": "[email protected]" 
    }, 
    "-1500361488354": 
    { 
     "cmt": "hello", 
     "ids": "-KpJVrAIVocWckK-vEd2", 
     "imgid": "-KpJT3Ygd8U3yf9nN-Yr", 
     "timestamp": "1500361488354", 
     "userid": "[email protected]" 
    } 
}