簡體   English   中英

過濾后無法重置列表視圖

[英]Can't reset a listview after filtering

我目前有一個列表視圖,該列表視圖填充在“ onCreate”中,我的編輯文本通過傳遞給我的“ onTextChanged”方法的約束進行過濾,然后將其發送到數據庫處理程序類中的“ getChanges”方法中,並使用一個LIKE語句,將其過濾。 在我從編輯文本中刪除字符串搜索的那一刻(即它為空白)時,我希望所有內容都重新顯示。 目前,我無法執行此操作,顯示的數據僅顯示最后過濾的數據。

這是我的過濾器:

    searchName = (EditText) findViewById(R.id.inputName);
    searchedListResults.setTextFilterEnabled(true);
    searchName.addTextChangedListener(new TextWatcher() {
        @Override
        public void afterTextChanged(Editable s) {
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            cursorAdapter.getFilter().filter(s.toString());
        }
    });

    getCons = new DBHandler(this, null, null);
    cursorAdapter.setFilterQueryProvider(new FilterQueryProvider() {
        public Cursor runQuery(CharSequence constraint) {
            getCons.open();
            return getCons.getChanges(constraint.toString());
        }
    });

這是我的數據庫處理程序類中的方法,起初我以為是因為我要關閉“ IF”中的游標,但是這似乎有所不同。

public Cursor getChanges(String constraintPassed) {

        String [] columns = new String[]{KEY_ROWID, KEY_NAME, KEY_TEL, KEY_EMAIL, KEY_COMMENTS};
        Cursor c = null;
         if(constraintPassed == "" || constraintPassed.length() == 0)
         {
             c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, KEY_NAME + " ASC", null); 
             c.close();

         }

         else
         {

            c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + " LIKE'" + constraintPassed + "%'", null, null, null, KEY_NAME + " ASC", null);

         }

        if( c != null)
            {
                c.moveToFirst();
                return c;

            }
        return null;
    }


    }

您應該在過濾后使用它:

((EfficientAdapter)listview.getAdapter()).notifyDataSetChanged();

其中EfficientAdapter是您的Adapter類。

希望這對您有用。

嘗試更換線

cursorAdapter.getFilter().filter(s.toString());

yourclassname.this.cursorAdapter.getFilter().filter(s.toString());

在您的onTextChanged方法中。

暫無
暫無

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

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