当前位置: 首页 > 知识库问答 >
问题:

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

葛桐
2023-03-14

在我的应用程序中,我想将一些数据从服务器添加到RecolyerView的适配器中。
我编写了下面的代码,可以从服务器获取数据并显示到RecolyerView中。
但我的json没有用服务器的字母表排序。
我想在将这些数据添加到ArrayList之前,先用字母表排序并添加到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之前,我希望在companyName中使用Alphabet对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) {

            }
        });
    }
}

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

共有1个答案

明正德
2023-03-14

使用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
            }
        });

详细信息请查看这个。

 类似资料:
  • 问题内容: 我正在尝试这样做: 但这不对…文档模糊不清…您如何在Jinja2中做到这一点? 问题答案: 从2.6版开始,Jinja2的内置排序过滤器允许您指定属性以进行排序: 参见http://jinja.pocoo.org/docs/templates/#sort

  • 问题内容: 用Python的方式对压缩列表进行排序是什么? 代码: 上面的代码显示 [[‘d’,3),(’a’,2),(’t’,1),(’x’,0)] 我想排序 压缩 的价值观。因此,理想情况下,它最终看起来像这样 [[‘x’,0),(’t’,1),(’a’,2),(’d’,3)] 。 问题答案:

  • 问题内容: 如何在Android上按标签名称的升序和降序对JSONArray进行排序。 在我的应用程序中,我有一个类似于以下内容的JSON,需要根据用户选项显示数据(按user_id标记按升序或降序排序)。我已将JSON解析如下: 这是我的JSON响应: 解析时,我需要按“ user_id”标签名称排序的“结果” JSON数组,如何在Android中做到这一点? 问题答案: 这段代码可以返回排序后

  • 如何在Android上按其标记名升序和降序排序JSONArray。 在我的应用程序中,我有一个如下所示的JSON,需要根据users选项显示数据(按user_id标记按升序或降序排序)。我将JSON解析为:

  • 问题内容: 我有这个清单 但是现在我希望列表按以下方式排序: 如您所见,无论每个数字具有什么符号,我都希望从高到低排序,但是保持符号清晰吗? 问题答案: 使用的关键功能或:

  • 我有代码,我已经使用列表来存储数据。我想对它的数据进行排序,那么有没有办法对数据进行排序,或者我必须通过比较所有的数据手动进行排序?