如何在android

时间:2017-08-21 06:15:23

标签: android android-recyclerview adapter

我正在开发一个Android聊天应用程序。当我打电话给我的api时,它会返回按 user_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

7 个答案:

答案 0 :(得分:11)

在将列表传递给适配器之前尝试此操作(在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;
            }
        });

答案 1 :(得分:1)

 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获得的arraylist,这是我通过的 到回收站视图适配器,

  • “ All_posts”是“ Model”类,该类仅包含字段;

  • getId是我想要对其进行比较的值,它来自我的模型类,

我在将适配器设置为回收站视图之前编写了此代码。 在将adpater设置到recyclerView之后,我写了recyclerView.getAdapter().notifyDataSetChanged();

答案 2 :(得分: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());
            }
        });

然后将已排序的列表传递(通知)到适配器。

答案 3 :(得分:0)

在传递给RecyclerView Adapter之前添加以下代码行

Collections.sort(yourLists, new Comparator<YourList>() {
        @Override
        public int compare(YourList lhs, YourList rhs) {
            return lhs.getId().compareTo(rhs.getId());
        }
    });

答案 4 :(得分:0)

在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()

答案 5 :(得分:0)

 List<Items_Detail_model>items_model;
  Collections.sort(items_model, new Comparator<Items_Detail_model>() {
            @Override
            public int compare(Items_Detail_model o1, Items_Detail_model o2) {
                return o1.getDate().compareTo(o2.getDate());
            }
        });

答案 6 :(得分:0)

针对仍停留在同一个人上的人的更简单解决方案

  Collections.sort(data, new Comparator<CustomData>() {
            @Override
            public int compare(CustomData lhs, CustomData rhs) {
                return Integer.compare( rhs.getId(),lhs.getId());
            }
        });

YourAdapter adapter = new YourAdapter(context, data);

//Setup Linear or Grid Layout manager
 recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
 recyclerView.setAdapter(adapter);