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

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

Android,ListView IllegalStateException:

Android,ListView IllegalStateException:

qq_遁去的一_1 2019-08-03 07:03:26
Android,ListView IllegalStateException:“適配器的內(nèi)容已經(jīng)更改,但ListView沒有收到通知”我想做什么:運(yùn)行一個(gè)后臺線程,該線程計(jì)算ListView內(nèi)容并部分更新ListView,同時(shí)計(jì)算結(jié)果。我知道我必須避免:我不能從后臺線程處理ListAdapter內(nèi)容,因此我繼承了AsyncTask并從onProgressUpdate發(fā)布結(jié)果(向適配器添加條目)。我的Adapter使用結(jié)果對象的ArrayList,這些數(shù)組列表上的所有操作都是同步的。他人研究*有非常有價(jià)值的數(shù)據(jù)這里..我還遭受了幾乎每天對500名用戶的崩潰,當(dāng)我添加list.setVisibility(GONE)/trackList.setVisibility(VISIBLE)塊在onProgressUpdate中,崩潰降低了10倍,但沒有消失。(建議回答 )我有的時(shí)候:請注意,這種情況很少發(fā)生(3.5k用戶之一每周一次)。但我想把這個(gè)蟲子徹底清除掉。下面是部分堆棧跟蹤:`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次插入一次,以避免閃爍和突然的列表變化。它不能這樣做,總是通知適配器時(shí),基本列表的變化。這個(gè)竊聽器對我來說已經(jīng)消失很久了。
查看完整描述

3 回答

?
UYOU

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

我也有過同樣的問題。

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

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



查看完整回答
反對 回復(fù) 2019-08-05
?
慕碼人2483693

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊

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

requestLayout();

從班上ListView


查看完整回答
反對 回復(fù) 2019-08-05
?
寶慕林4294392

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

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

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

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

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

因此,如果要同步所有正在更改適配器數(shù)據(jù)的代碼,并進(jìn)行通知數(shù)據(jù)更改調(diào)用。這個(gè)問題應(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());
        }
    }

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

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

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

然后,它創(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-08-05
  • 3 回答
  • 0 關(guān)注
  • 403 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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