簡體   English   中英

如何通過方向更改來維護已過濾的CursorAdapter的狀態?

[英]How to maintain state of filtered CursorAdapter through orientation changes?

我有一個可以幫助用戶組織處方的應用程序。 我有一個顯示葯物的列表視圖,並且使用EditText允許用戶篩選列表。 我遇到的問題是,每次更改方向時都會更換CursorLoader。

據我了解,應該在onActivityCreated()中調用LoaderManager.initLoader()函數。 在我的特定情況下,我沒有片段,所以我將initLoader()調用放入onPostCreate()

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    getSupportLoaderManager().initLoader(MEDICATION_LOADER, null, this);
}

這是我正在使用的過濾器:

// Set text filter
mMedication.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        mMedicationAdapter.getFilter().filter(s);
    }
});

我刪除了空的beforeTextChanged和afterTextChanged方法以縮短此時間。

因此,似乎發生了(通過使用調試器),每次我更改設備方向時, initLoader()再次調用initLoader()並顯示整個葯物列表,而不僅僅是過濾的葯物列表。 有沒有一種方法可以實現onSaveInstanceState()來存儲適配器的當前過濾狀態?

還是我使用的文字過濾器錯誤? 我應該將charSequence作為Bundle參數傳遞給加載程序,還是創建另一個將文本作為參數處理的加載程序?

一種解決方案是您可以在方向更改時保留當前活動,只需將活動設置為處理AndroidManifest.xml中的配置更改即可Android配置更改

例如

 <activity
        android:name="com.test.MyActivity"
        android:configChanges="screenSize|orientation"/>

如果您的edittext是通過布局文件誇大的,並且具有ID; 該框架應自動保存其文本。

您可以嘗試在附加文本監視程序之前進行檢查,如果edittext中包含任何文本,則過濾列表,然后附加文本監視程序。

暫無
暫無

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

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