gpt4 book ai didi

java - 如何在不重新加载屏幕的情况下更改回收器 View 中的单个项目?

转载 作者:行者123 更新时间:2023-12-02 09:19:43 24 4
gpt4 key购买 nike

我的回收 View 中有很多项目。我想要做的是更改被单击项目内的 TextView 中的文本。我就是这样做的:

        wordList.set(position, newWord);
MyProgressActivityAdapter newAdapter = new MyProgressActivityAdapter(wordList, this);
newAdapter.notifyItemChanged(position);
recyclerView.setAdapter(newAdapter);

一切工作正常,除了每次我单击项目时屏幕都会转到顶部。我该怎么做才能避免这种情况?

最佳答案

您应该使用 notifyItemChanged 的有效负载版本,这里有一个简单的示例供您掌握它的窍门:

adapter.notifyItemChanged(position, "updateText");

然后在您的RecyclerAdapter中覆盖onBindViewHolder的有效负载版本:

@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position, @NonNull List payloads) {
if (payloads.isEmpty()) onBindViewHolder(holder, position);
else if ("updateText".equals(payloads.get(0))) {
if (holder instanceof YourViewHolder) {
((YourViewHolder) holder).textView.setText(dataProvider.get(position).getNewText());
}
}
}

请注意,此方法会阻止 RecyclerView 创建新的 ViewHolder 然后绑定(bind)您的数据,因此您应该只调用 notificationItemChanged 无需重置适配器等。

关于java - 如何在不重新加载屏幕的情况下更改回收器 View 中的单个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58770381/

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