第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Android,ListView IllegalStateException:

Android,ListView IllegalStateException:

眼眸繁星 2019-07-12 19:03:25
Android,ListView IllegalStateException:“適配器的內(nèi)容已經(jīng)更改,但ListView沒有收到通知”我想做什么:運行一個后臺線程,該線程計算ListView內(nèi)容并部分更新ListView,同時計算結(jié)果。我知道我必須避免:我不能從后臺線程處理ListAdapter內(nèi)容,因此我繼承了AsyncTask并從onProgressUpdate發(fā)布結(jié)果(向適配器添加條目)。我的Adapter使用結(jié)果對象的ArrayList,這些數(shù)組列表上的所有操作都是同步的。他人研究*有非常有價值的數(shù)據(jù)這里..我還遭受了幾乎每天對500名用戶的崩潰,當(dāng)我添加list.setVisibility(GONE)/trackList.setVisibility(VISIBLE)塊在onProgressUpdate中,崩潰降低了10倍,但沒有消失。(建議回答 )我有的時候:請注意,這種情況很少發(fā)生(3.5k用戶之一每周一次)。但我想把這個蟲子徹底清除掉。下面是部分堆棧跟蹤:`java.lang.IllegalStateException:` The content of the adapter has changed but ListView  did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131296334, class android.widget.ListView) with Adapter(class com.transportoid.Tracks.TrackListAdapter)]at android.widget.ListView.layoutChildren(ListView.java:1432)at android.widget.AbsListView.onTouchEvent(AbsListView.java:2062)at android.widget.ListView.onTouchEvent(ListView.java:3234)at android.view.View.dispatchTouchEvent(View.java:3709)at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:852)at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)[...]幫助?不再需要了,見下面最后答案:結(jié)果,我打電話給notifyDataSetChanged每5次插入一次,以避免閃爍和突然的列表變化。它不能這樣做,總是通知適配器時,基本列表的變化。這個竊聽器對我來說已經(jīng)消失很久了。
查看完整描述

3 回答

?
MYYA

TA貢獻(xiàn)1868條經(jīng)驗 獲得超4個贊

我也有過同樣的問題。

我在我的ArrayList在UI線程之外。

解決辦法:我兩者都做過,adding the items并呼叫notifyDataSetChanged()在UI線程中。


查看完整回答
反對 回復(fù) 2019-07-12
?
婷婷同學(xué)_

TA貢獻(xiàn)1844條經(jīng)驗 獲得超8個贊

我也有同樣的問題,但是我用這個方法修復(fù)了它。

requestLayout();

從班上ListView


查看完整回答
反對 回復(fù) 2019-07-12
?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗 獲得超2個贊

這是一個多線程正確發(fā)布和使用同步這是可以阻止的。不需要在UI線程上添加額外的內(nèi)容,也不會導(dǎo)致應(yīng)用程序的響應(yīng)能力喪失。

我也面臨著同樣的問題。正如最被接受的答案所建議的那樣,從UI線程更改適配器數(shù)據(jù)可以解決這個問題。這將有效,但是一個快速和容易的解決辦法,但不是最好的。

你可以看到正常情況下。從后臺線程更新數(shù)據(jù)適配器,并調(diào)用UI線程中的NotifyDataSetChanged。

當(dāng)UI線程正在更新視圖時,當(dāng)另一個后臺線程再次更改數(shù)據(jù)時,就會出現(xiàn)這個非法的StateException。這一時刻引起了這個問題。

因此,如果要同步所有正在更改適配器數(shù)據(jù)的代碼,并進(jìn)行通知數(shù)據(jù)更改調(diào)用。這個問題應(yīng)該解決了。隨著我的離去,我仍然在更新來自后臺線程的數(shù)據(jù)。

下面是我的案例代碼,供其他人參考。

主屏幕上的加載程序?qū)㈦娫挷韭?lián)系人加載到后臺的數(shù)據(jù)源中。

    @Override
    public Void loadInBackground() {
        Log.v(TAG, "Init loadings contacts");
        synchronized (SingleTonProvider.getInstance()) {
            PhoneBookManager.preparePhoneBookContacts(getContext());
        }
    }

這個PhoneBookManager.getPhoneBookContact讀取電話簿中的聯(lián)系人并將它們填充到hashmap中。它可直接用于列表適配器繪制列表。

我的屏幕上有個按鈕。這就打開了一個活動,其中列出了這些電話號碼。如果我在前面的線程完成其工作之前直接在列表上設(shè)置Adapter,即快速導(dǎo)航情況發(fā)生的次數(shù)較少。它彈出了例外。哪個是這個標(biāo)題,所以問題。所以我必須在第二次活動中做這樣的事情。

我在第二個活動中的加載器等待第一個線程完成。直到顯示一個進(jìn)度條。檢查兩個裝載機的裝載機后臺。

然后,它創(chuàng)建適配器并將其傳遞給在UI線程上我稱為setAdapter的活動。

解決了我的問題。

此代碼僅為片段。您需要更改它,以便為您進(jìn)行良好的編譯。

@Overridepublic Loader<PhoneBookContactAdapter> onCreateLoader(int arg0, Bundle arg1) {
    return new PhoneBookContactLoader(this);}@Overridepublic void onLoadFinished(Loader<PhoneBookContactAdapter> 
    arg0, PhoneBookContactAdapter arg1) {
    contactList.setAdapter(adapter = arg1);}/*
 * AsyncLoader to load phonebook and notify the list once done.
 */private static class PhoneBookContactLoader extends AsyncTaskLoader<PhoneBookContactAdapter> {

    private PhoneBookContactAdapter adapter;

    public PhoneBookContactLoader(Context context) {
        super(context);
    }

    @Override
    public PhoneBookContactAdapter loadInBackground() {
        synchronized (SingleTonProvider.getInstance()) {
            return adapter = new PhoneBookContactAdapter(getContext());    
        }
    }}

希望這能幫上忙


查看完整回答
反對 回復(fù) 2019-07-12
  • 3 回答
  • 0 關(guān)注
  • 427 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號