java - 如何在 Android 上的 RecyclerView 中对列表进行排序

标签 java android sorting android-recyclerview

在我的应用程序中,我想将一些数据从服务器添加到RecyclerView适配器中。
我写了下面的代码,我可以从服务器获取数据并显示到 RecyclerView 中。
但我的 json 未按服务器的 字母 排序
我想在将此数据添加到 ArrayList 之前,first 使用 Alphabet 对其进行排序,然后添加到 ArrayList 中。
我的json:

{
    "validationCheckResult": {
        "isValid": true,
        "message": "Success"
    },
    "internalCarBoard": [{
        "id": 0,
        "name": “S500”,
        "companyName": “Benz”,
    }, {
        "id": 0,
        "name": " E250”,
        "companyName": “Benz”,
    }, {
        "id": 0,
        "name": “TT”,
        "companyName": “Audi”,
    }, {
        "id": 0,
        "name": " Talisman”,
        "companyName": “Renult”,
    }, {
        "id": 0,
        "name": " Accord”,
        "companyName": “Honda”,
    }, {
        "id": 0,
        "name": “A8”,
        "companyName": “Audi”,
    }]
}

我想在添加到 ArrayList 之前使用 Alphabet 对来自 companyName 的 json 进行排序。
但我想将其分类到Android而不是服务器中。

我的Java代码:

public class SortListActivity extends AppCompatActivity {

    private RecyclerView sortList_recycler;
    private SortAdapter sortAdapter;
    private List<InternalCarBoard> model = new ArrayList<>();
    private API api;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sort_list);
        sortList_recycler = findViewById(R.id.sortList_recycler);
        api = ApiClient.getClient().create(API.class);
        sortAdapter = new SortAdapter(model);
        sortList_recycler.setHasFixedSize(true);
        sortList_recycler.setLayoutManager(new LinearLayoutManager(this));
        sortList_recycler.setAdapter(sortAdapter);

        Call<VersionUpdateResponse> call = api.getCar();
        call.enqueue(new Callback<VersionUpdateResponse>() {
            @Override
            public void onResponse(Call<VersionUpdateResponse> call, Response<VersionUpdateResponse> response) {
                if (response.isSuccessful()) {
                    if (response.body() != null) {
                        if (response.body().getInternalCarBoard().size() > 0) {
                            model.clear();
                            model.addAll(response.body().getInternalCarBoard());
                            sortAdapter.notifyDataSetChanged();
                        }
                    }
                }
            }

            @Override
            public void onFailure(Call<VersionUpdateResponse> call, Throwable t) {

            }
        });
    }
}

在添加到 ArrayList 之前,如何使用 AlphabetcompanyName 中的 json 进行排序?

最佳答案

像这样使用 Collections.sort()

Collections.sort(model, new Comparator<InternalCarBoard>(){
            public int compare(InternalCarBoard obj1, InternalCarBoard obj2) {
                // ## Ascending order
                return obj1.getCompanyName().compareToIgnoreCase(obj2.getCompanyName); // To compare string values
                // return Integer.valueOf(obj1.getId()).compareTo(obj2.getId()); // To compare integer values

                // ## Descending order
                // return obj2.getCompanyName().compareToIgnoreCase(obj1.getCompanyName()); // To compare string values
                // return Integer.valueOf(obj2.getId()).compareTo(obj1.getId()); // To compare integer values
            }
        });

检查this了解详情。

关于java - 如何在 Android 上的 RecyclerView 中对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51358606/

相关文章:

PHP SQL - 按国家排序

java - 尝试从 SSLSocket 读取时获取 EOFException

android - 使用协调器布局以编程方式隐藏工具栏

java - 如何根据 jtable 中动态添加的列对行进行排序?

android - 尝试在 Eclipse 上更新到 Android SDK 2.3 导致 adb 丢失

android - 如何自动更新android :versionName?

objective-c - 使用多个 NSSortDescriptor 有效地对数组中的对象进行排序

java - 如何对对象的 ArrayList 进行排序(玩家姓名和玩家分数)

java - 如何检查某些内容是否已写入文件?

java - HQL 按时间单位(小时/天/月)选择总和和时间组以及