簡體   English   中英

在RecyclerView中通過notifyDataSetChanged發布更新數據

[英]Issue on update data by notifyDataSetChanged in RecyclerView

我使用Recycler View來顯示我的數據列表。 我調用了Web服務並從服務器獲取數據並使用服務器數據更新當前的ArrayList 這就是我填充當前ArrayList中的數據的方法。

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

並應用notifyDataSetChanged()來反映數據列表,但它不反映列表。 mAlUotesDatas它顯示更新的數據,但不顯示更新的數據列表。

之后,我改變它

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

這很好用。 令我驚訝的是,這是如何工作的,盡管在Web服務調用之后它們都有更新的數據。

誰能幫我理解這是怎么回事?

這是我的班級。

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它可以工作,因為你使用同一個實例並且你正在替換它里面的項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM