2017-06-08 9 views
0

チャットアプリケーション用のListViewを作った。私はFirebaseを使用していますが、問題があります。リストビューの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

はFirebaseドキュメントから何か

// 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(。 limitToLast(25) 'は動作していないようです。 – DeluxeD

+1

クエリ –

+1

ああ、 クエリクエリ= ref.limitToLast(20);と 'adapter = new FirebaseListAdapter (this、MessageModel.class、R.layout.item_chat_right、query){...で動作しますそれを修正! – DeluxeD

関連する問題