2017-08-21 108 views
1

我正在開發一個android聊天應用程序。當我打電話給我的api時,它返回我按照user_id排序的聊天列表。但我需要做的是由message_id序列化,因爲我想顯示最後的消息first.Here是我的onBindViewHolder方法中,我得到的值。如何在Android中排序RecyclerView項目

public void onBindViewHolder(final MyAdapter_HomeViewHolder holder, final int position) { 

    holder.userNameTV.setText(data.get(position).getUserInfo().getFullName()); 
    holder.msgBodyTV.setText(data.get(position).getBody()); 
    holder.originator_iD.setText(data.get(position).getUserInfo().getId().toString()); 

    //message ID. I need to serialize my recyclerView by this ID.biggest id should appear first. 
    holder.messageId.setText(data.get(position).getId().toString()); 

    holder.owner_type_ET.setText("1"); 
    holder.subject_ET.setText("Message"); 

} 

在你的情況需要看到完整的代碼,https://pastebin.com/Zxmq36Gn

+0

你的意思是序列化或排序?我假設你正在使用回收器視圖,所以當你添加一個新項目然後在你的適配器上調用「notifyDataSetChanged()」時,你需要做的事情(假設你的意思是排序)就是排序列表。這可以通過在回收視圖中爲您的對象實現比較器功能來完成。 [見這裏](https://stackoverflow.com/questions/5805602/how-to-sort-list-of-objects-by-some-property)如何排序 – swerly

+0

是的,我的意思是通過message_id短路。需要在頂部顯示最大的message_id。和notifyDataSetChanged()像往常一樣返回我的user_id。 –

+0

檢查我發佈的關於如何對列表進行排序的鏈接。在你的構造函數,你把它作爲前一個成員變量,你可以對列表進行排序: '公共MyAdapter_home(名單數據,INT的RowLayout,上下文的背景下){這裏 this.data =數據 //排序的數據; this.rowLayout = rowLayout; this.context = context; }' – swerly

回答

1

通過你的清單適配器(後API調用之前適配器notifydatasetchanged)之前,試試這個:

Collections.sort(data, new Comparator<CustomData>() { 
      @Override 
      public int compare(CustomData lhs, CustomData rhs) { 
       // -1 - less than, 1 - greater than, 0 - equal, all inversed for descending 
       return lhs.getId() > rhs.getId() ? -1 : (lhs.customInt < rhs.customInt) ? 1 : 0; 
      } 
     }); 
+0

顯示很多錯誤。你能告訴我什麼是我的代碼根據你? –

+0

完美的作品。非常感謝 –

0

將數據傳遞到RecyclerView適配器

data.sort(new Comparator<Datum>() { 
      @Override 
      public int compare(Datum o1, Datum o2) { 
       return o1.get(position).getMessageId().compareTo(o2.get(position).getMessageId()); 
      } 
     }); 

然後傳遞(通知)排序列表中的適配器之前。

+0

data.sort不起作用。它說api的使用記錄爲@since 1.8+ –

+0

只是與@Sanat Chandravanshi回答下面 –