2017-06-08 18 views
0

こんにちは私はwhatsappのようなチャットアプリケーションを開発しています。ユーザーがwhatsappのようにスクロールすると、apiからチャット履歴を読み込む必要があります。データを取得してアダプタに設定します。しかし歴史はリサイクラーの視点の最下部にあります。私はすべてのスクロールの上にそれを追加する必要があります。これは私のコードです。私を助けてください。前もって感謝します。リサイクラービューの上にチャット履歴を読み込む方法android

       if (Status.equals("1")) { 
           historyList = resp.getHistory(); 
           Log.i("history size",String.valueOf(resp.getHistory().size())); 
           String historysize = String.valueOf(resp.getHistory().size()); 
           Message message = new Message(); 
           for (int i = 0; i < resp.getHistory().size(); i++) { 
            String fromusertoken = String.valueOf(resp.getHistory().get(i).getFromUserToken()); 
            String txtmsg = resp.getHistory().get(i).getMessage(); 
            String username = String.valueOf(resp.getHistory().get(i).getFromUserName()); 

            if (fromusertoken.equals(user_token)) { 
             Message messages = new Message(); 
             messages.setUser_token(fromusertoken); 
             messages.setUsername(username); 
             messages.setIsMine(true); 
             messages.setMessage(txtmsg); 
             messageAdapter.add(messages); 

            } 
            else { 
             Message messages = new Message(); 
             messages.setUser_token(fromusertoken); 
             messages.setUsername(username); 
             messages.setIsMine(false); 
             messages.setMessage(txtmsg); 
             messageAdapter.add(messages); 
            } 
           } 

           messageAdapter.notifyDataSetChanged(); 
           onItemsLoadComplete(); 

           Toast.makeText(Single_chat.this, msg, Toast.LENGTH_SHORT).show(); 
          } 

         } else { 
          Toast.makeText(Single_chat.this, msg, Toast.LENGTH_SHORT).show(); 
         } 
        } 
       } else { 
        Toast.makeText(Single_chat.this, "No Response", Toast.LENGTH_SHORT).show(); 
       } 

      } 
+1

0番目のインデックスに履歴データを追加します。 – Pavan

+0

コードサンプルを最小限に抑える必要があります。 https://stackoverflow.com/help/mcve – Markus

答えて

0

は、あなたはそれが最後に挿入されたメッセージによって、最初のメッセージを交換しますインデックス0

messageAdapter.add(0,messages);

反復ごとに履歴メッセージを挿入することができます。

0
chatHistoyList.add(adapter.getCurrentChatList()); 

adapter.setData(chatHistoryList); 

adapter.notifyDataSetChanged(); 

//This method has to be in adapter 
public List<Chat> getCurrentChatList() { 
     return currentChatList; 
} 
1

アダプターのリストをmessagelist.add(0,message)に変更しました。出来た。

public void add(Message message) { 
    messageList.add(0,message); 
    notifyItemInserted(messageList.size() - 1); 
} 
0

アクティビティではなくアダプタクラスを編集して項目を一番上に設定する方法があります。 messagelist.add(0,message)のようなアイテムリストを追加する必要があります。今私だけが見つかりました。あなたの通常のチャットでは、通常のようにmessagelist.add(message)のように追加する必要があります。これにより、項目が下部に追加されます。これが他の人にとって有益であることを願っています。

public void add(Message message) { 
    messageList.add(message); 
    notifyItemInserted(messageList.size() - 1); 
} 
public void add(int i,Message message) { 
    messageList.add(0,message); 
    notifyItemInserted(messageList.size() - 1); 
} 
関連する問題