gpt4 book ai didi

android - 回收站 View : add item at position

转载 作者:行者123 更新时间:2023-11-29 15:42:36 26 4
gpt4 key购买 nike

我从服务器获取数据,我想在 RecyclerView 中显示这些数据。首先,我得到一个列表,其中包含应检索数据的 URL 以及应将此数据放入 RecyclerView 中的位置。我想在检索到数据后立即显示,而不是等待检索到所有数据。因此,例如,如果有一个列表项显示“url: www.url.com/data.php, postition: 3”,我想从服务器检索此数据并填充我的 RecyclerView< 的第三行 与此数据。即使还没有第一和第二个元素。

现在我是这样做的:一旦我知道我必须检索多少个位置,我就会创建一个 Adapter,其中包含 numSections 元素,这些元素都是 null .像这样:

ArrayList<ContentPreviewSectionModel> emptySections = new ArrayList<>();
while(emptySections.size() < numSections) emptySections.add(null);
RecyclerView contentPreviewList = (RecyclerView) findViewById(R.id.content_preview_list);
contentPreviewListAdapter = new RecyclerViewDataAdapter(this, this, emptySections);
contentPreviewList.setAdapter(contentPreviewListAdapter);

当我检索到一个 URL 的内容时,我会像这样更新 RecyclerView:

    @Override
public void setSectionContentRetrieved(int position, ContentPreviewSectionModel content,) {
contentPreviewListAdapter.addItemAtPosition(content, position);
contentPreviewListAdapter.notifyDataSetChanged();
}

addItemAtPosition 只是 Adapters 数据结构上的 arrayList.set(position, content)

我想知道这是否是实现我想要的目标的最简单方法?谢谢。

最佳答案

而不是使用 contentPreviewListAdapter.notifyDataSetChanged()

你应该使用:
contentPreviewListAdapter.notifyItemInserted(position);

(当你想在想要的位置添加项目时)

并使用:
contentPreviewListAdapter.notifyItemInserted(emptySections.size() - 1);

(当你想在末尾添加项目时)

注意: 在调用 addItemAtPosition() 之后执行此操作,不要调用 notifyDataSetChanged()

希望这能解决您的问题。

关于android - 回收站 View : add item at position,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38140031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com