You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RecyclerView仅显示最后一条数据及数据位置调整问题求助

问题修复与解答

一、RecyclerView仅显示最后一条数据的修复

问题核心:你在循环外部创建了PeopleModel对象,每次循环只是修改该对象的属性值,再重复添加到列表中。由于列表里所有元素都是同一个对象的引用,最终所有条目都会显示最后一次修改后的属性值。

修复方案:将PeopleModel的实例化代码移到for循环内部,每次循环创建新的对象实例:

修改后的核心代码片段:

try {
    JSONArray jsonArray = new JSONArray(response);
    for (int i = 0; i < jsonArray.length(); i++) {
        // 每次循环创建新的PeopleModel实例
        PeopleModel peopleModel = new PeopleModel();
        JSONObject jsonObject = jsonArray.getJSONObject(i);
        peopleModel.setFirstName(jsonObject.getString("first_name"));
        peopleModel.setLastName(jsonObject.getString("last_name"));
        peopleModel.setId(String.valueOf(jsonObject.getInt("id")));
        peopleModel.setCity(jsonObject.getString("city"));
        peopleModelList.add(peopleModel);
    }
    recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this,
            RecyclerView.VERTICAL,false));
    recyclerView.setAdapter(new PeopleAdapter(peopleModelList));
} catch (JSONException e) {
    throw new RuntimeException(e);
}

二、让数据第一条显示在RecyclerView第0位

修复第一个问题后,你的代码默认会按照JSON数组的顺序(从索引0到末尾)将数据添加到列表中,RecyclerView会遵循列表的顺序从第0位开始展示内容,因此原JSON数组的第一条内容自然会显示在RecyclerView的第0位,无需额外修改。

如果后续需要调整数据顺序(比如反转列表),可在添加完所有数据后调用:

Collections.reverse(peopleModelList);

当前场景下不需要此操作。


内容的提问来源于stack exchange,提问作者Ehsan Taghizadeh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:08:23