gpt4 book ai didi

android - RecyclerView 中 notifyDataSetChanged 更新数据的问题

转载 作者:太空狗 更新时间:2023-10-29 13:12:41 24 4
gpt4 key购买 nike

我使用 Recycler View 来显示我的数据列表。我调用了网络服务并从服务器获取数据并使用服务器数据更新当前的ArrayList。这就是我在当前 ArrayList 中填充数据的方式。

mAlUotesDatas.clear();
mAlUotesDatas = (ArrayList<BillBoardData>) webservice.data;
mUotesAdaptor.notifyDataSetChanged();

并应用 notifyDataSetChanged() 以反射(reflect)在数据列表中,但它不反射(reflect)列表。在 mAlUotesDatas 中,它显示更新后的数据,但不显示更新后的数据列表。

然后我把它改成

mAlUotesDatas.clear();
mAlUotesDatas.addAll(res.data);
mUotesAdaptor.notifyDataSetChanged();

这很好用。令我惊讶的是,这是如何工作的??,尽管在网络服务调用后两者都有更新的数据。

谁能帮我理解这是怎么回事?

这是我的课。

package com.mimran.aphorismus.models;

import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.mimran.aphorismus.R;
import com.mimran.aphorismus.adapters.QuotesAdaptor;

import java.util.ArrayList;

public class DataFragment extends Fragment {

private RecyclerView mRcvQuotes;
private QuotesAdaptor mUotesAdaptor;
private ArrayList<BillBoardData> mAlUotesDatas;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

mRcvQuotes = (RecyclerView) links(R.id.rcv_quotes);
mUotesAdaptor = new QuotesAdaptor(mContext, mAlUotesDatas);
mRcvQuotes.setAdapter(mUotesAdaptor);

return inflater.inflate(R.layout.my_view, container, false);
}

public void webserviceCall() {
public void onResponse ()
{
if (response.isSuccess()) {
mAlUotesDatas.clear();
//mAlUotesDatas = (ArrayList<BillBoardData>) res.data;
mAlUotesDatas.addAll(res.data);
mUotesAdaptor.notifyDataSetChanged();
}
}

}
}

最佳答案

它不起作用,因为您没有将项目添加到正确的数据收集实例。

Adapter 在具有特定数据收集实例的构造函数中初始化,并且它一直在处理它。

在此之后:

 mAlUotesDatas = (ArrayList<BillBoardData>) webservice.data;

mAlUotesDatas 是对不同于Adapter 实例的集合的引用。

然后:

mUotesAdaptor.notifyDataSetChanged();

实际上通知适配器有关“旧” 数据收集的更改,但没有更改。

当您使用 clearaddAll 时,它会起作用,因为您使用的是同一个实例,并且您正在替换其中的项目。

关于android - RecyclerView 中 notifyDataSetChanged 更新数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38222225/

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