2017-06-08 102 views
0

我爲我的聊天應用程序做了一個ListView。我正在使用Firebase,但是我遇到了一個問題:如何從ListView中獲取Firebase中的最後50個元素?

它顯示來自服務器的每個數據都會大大減慢加載時間。

我想作一個查詢只顯示在列表的最後10-30或50元,但我不知道如何開發它,並在沒有找到足夠好的答案給我Query Api Reference。如果我向上滾動,可以像每個其他聊天應用程序(Viber,Messenger)一樣動態調整數字會更好。 因此,這裏是我的顯示器實現:

private void displayChatMessages() { 
    listOfMessages = (ListView) findViewById(R.id.list_of_messages); 

    adapter = new FirebaseListAdapter<ChatMessage>(this, ChatMessage.class, 
      R.layout.message, FirebaseDatabase.getInstance().getReference()) { 
     @Override 
     protected void populateView(View v, ChatMessage model, int position) { 
      // Get references to the views of message.xml 
      TextView messageText = (TextView) v.findViewById(R.id.message_text); 
      TextView messageUser = (TextView) v.findViewById(R.id.message_user); 
      TextView messageTime = (TextView) v.findViewById(R.id.message_time); 

      // Set their text 
      messageText.setText(model.getMessageText()); 
      messageUser.setText(model.getMessageUser()); 

      // Format the date before showing it 
      messageTime.setText(DateFormat.format("yyyy-MM-dd (HH:mm:ss)", 
        model.getMessageTime())); 
     } 
    }; 

    listOfMessages.setAdapter(adapter); 
    listOfMessages.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); 
} 

回答

1

下面是從火力地堡文檔東西

// Last 100 posts, these are automatically the 100 most recent 
// due to sorting by push() keys 
Query recentPostsQuery = databaseReference.child("posts") 
     .limitToFirst(100); 

https://firebase.google.com/docs/database/android/lists-of-data#filtering_data

+0

'REF =(DatabaseReference)database.getReference()子(將String.valueOf(。 generateChatID))。limitToLast(25)'似乎不工作。 – DeluxeD

+1

它適用於查詢 –

+1

哦,是的, 'Query query = ref.limitToLast(20);'和'adapter = new FirebaseListAdapter (this,MessageModel.class,R.layout.item_chat_right,query){... '修好了! – DeluxeD

相關問題