web-dev-qa-db-ja.com

androidでRecyclerViewアイテムをソートする方法

Androidチャットアプリケーション。APIを呼び出すと、ser_id。でソートされたチャットリストが返されますが、必要なことはシリアル化されています。 message_id最後のメッセージを最初に表示したいので。ここに、値を取得するonBindViewHolderメソッドを示します。

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

14
Tanvir Durlove

リストをアダプターに渡す前に(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;
            }
        });
13

RecyclerViewアダプターに渡す前にこのコード行を追加します

Collections.sort(yourLists, new Comparator<YourList>() {
        @Override
        public int compare(YourList lhs, YourList rhs) {
            return lhs.getId().compareTo(rhs.getId());
        }
    });
1
Pratik Gautam
_ Collections.sort(response.body(), new Comparator<All_posts>() {
                        @Override
                        public int compare(All_posts lhs, All_posts rhs) {
                            if(lhs.getId() > rhs.getId()) {
                                return -1;
                            } else {
                                return 1;
                            }
                        }
                    });
_
  • 「response.body」は、jsonから取得した配列リストです。これは、リサイクラービューアダプターに渡すものです。

  • 「All_posts」は「Model」クラスであり、フィールドのみを含むクラスです。

  • GetIdは、比較を実行する値であり、モデルクラスから取得したものです。

アダプタをリサイクラビューに設定する前にこれを書きました。アダプターをrecyclerViewに設定した後、recyclerView.getAdapter().notifyDataSetChanged();と書きました

1
Hossein

kotlinでは、配列にデータをロードした後、次のように使用します。

myItems.sortWith(Comparator { lhs, rhs ->
            // -1 - less than, 1 - greater than, 0 - equal, all inversed for descending
            if (lhs.name > rhs.name) -1 else if (lhs.id < rhs.id) 1 else 0
        })

適用後:

myItemAdapter.notifyDataSetChanged()
1
Sid

データを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