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

Hoc*_*ock 0 java sorting android android-recyclerview

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

\n\n
{\n    "validationCheckResult": {\n        "isValid": true,\n        "message": "Success"\n    },\n    "internalCarBoard": [{\n        "id": 0,\n        "name": \xe2\x80\x9cS500\xe2\x80\x9d,\n        "companyName": \xe2\x80\x9cBenz\xe2\x80\x9d,\n    }, {\n        "id": 0,\n        "name": "\xc2\xa0E250\xe2\x80\x9d,\n        "companyName": \xe2\x80\x9cBenz\xe2\x80\x9d,\n    }, {\n        "id": 0,\n        "name": \xe2\x80\x9cTT\xe2\x80\x9d,\n        "companyName": \xe2\x80\x9cAudi\xe2\x80\x9d,\n    }, {\n        "id": 0,\n        "name": "\xc2\xa0Talisman\xe2\x80\x9d,\n        "companyName": \xe2\x80\x9cRenult\xe2\x80\x9d,\n    }, {\n        "id": 0,\n        "name": "\xc2\xa0Accord\xe2\x80\x9d,\n        "companyName": \xe2\x80\x9cHonda\xe2\x80\x9d,\n    }, {\n        "id": 0,\n        "name": \xe2\x80\x9cA8\xe2\x80\x9d,\n        "companyName": \xe2\x80\x9cAudi\xe2\x80\x9d,\n    }]\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想在添加到之前对companyName中的 json 进行排序并使用字母表ArrayList
\n但我想将其分类到Android而不是服务器中。

\n\n

我的Java代码:

\n\n
public class SortListActivity extends AppCompatActivity {\n\n    private RecyclerView sortList_recycler;\n    private SortAdapter sortAdapter;\n    private List<InternalCarBoard> model = new ArrayList<>();\n    private API api;\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_sort_list);\n        sortList_recycler = findViewById(R.id.sortList_recycler);\n        api = ApiClient.getClient().create(API.class);\n        sortAdapter = new SortAdapter(model);\n        sortList_recycler.setHasFixedSize(true);\n        sortList_recycler.setLayoutManager(new LinearLayoutManager(this));\n        sortList_recycler.setAdapter(sortAdapter);\n\n        Call<VersionUpdateResponse> call = api.getCar();\n        call.enqueue(new Callback<VersionUpdateResponse>() {\n            @Override\n            public void onResponse(Call<VersionUpdateResponse> call, Response<VersionUpdateResponse> response) {\n                if (response.isSuccessful()) {\n                    if (response.body() != null) {\n                        if (response.body().getInternalCarBoard().size() > 0) {\n                            model.clear();\n                            model.addAll(response.body().getInternalCarBoard());\n                            sortAdapter.notifyDataSetChanged();\n                        }\n                    }\n                }\n            }\n\n            @Override\n            public void onFailure(Call<VersionUpdateResponse> call, Throwable t) {\n\n            }\n        });\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n

Man*_*Man 5

像这样使用 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
            }
        });
Run Code Online (Sandbox Code Playgroud)

检查这个以了解详细信息。