私はアンドロイドチャットアプリケーションに取り組んでいます。私は私のAPIを呼び出すと私にuser_idでソートされたチャットリストを返します。しかし、私は最後のメッセージを最初に表示したいので、message_idによってシリアル化されています。私の値はonBindViewHolderメソッドです。 RecyclerView
アダプタアンドロイドのRecyclerViewアイテムをソートする方法
data.sort(new Comparator<Datum>() {
@Override
public int compare(Datum o1, Datum o2) {
return o1.get(position).getMessageId().compareTo(o2.get(position).getMessageId());
}
});
にデータを渡す前に、あなたの場合は
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
あなたはシリアル化や並べ替えを意味するのですか?私はあなたがリサイクラビューを使用していると仮定しているので、あなたが何をする必要があるか(あなたがソートを意味すると仮定して)新しい項目が追加されたときにリストをソートしてから、アダプタで "notifyDataSetChanged()"を呼び出します。これは、リサイクラビューでオブジェクトのコンパレータ関数を実装することで実行できます。ソート方法は[こちらを参照](https://stackoverflow.com/questions/5805602/how-to-sort-list-of-objects-by-some-property) – swerly
はい、私はmessage_idで短絡していることを意味します。上部に最大のmessage_idを表示する必要があります。 notifyDataSetChanged()はいつものように私のuser_idを返しています。 –
あなたのリストをソートする方法について投稿したリンクを確認してください。あなたはメンバ変数として設定する前に、あなたのコンストラクタでは、リストを並べ替えることができます。 '公共MyAdapter_home(一覧データ、int型rowLayout、コンテキストコンテキスト){ここ this.data =データ //ソートデータを、 this.rowLayout = rowLayout; this.context = context; } ' –
swerly