簡體   English   中英

ListView中的EditText搜索項不起作用

[英]EditText search item in listview doesn't work

嗨,大家好,我正在實現listview的edittext來過濾項目。 我正在跟蹤示例,但是什么也沒有發生。 它不起作用,當我嘗試過濾時,它並沒有實現我想要的功能。這是我的edittext代碼的一部分:

ListView lv = (ListView) findViewById(android.R.id.list);
        lv.setTextFilterEnabled(true);
        lv.setAdapter(listadaptor);
        inputSearch.addTextChangedListener(new TextWatcher() {

            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                // When user changed the Text
                MainActivity.this.listadaptor.getFilter().filter(cs);   
            }

            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {
                // TODO Auto-generated method stub

            }

            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub                          
            }
        });
    };

我的列表視圖是一個列表,顯示了設備中安裝的所有應用程序。

private class LoadApplications extends AsyncTask<Void, Void, Void> {

public ProgressDialog progress = null;

@Override
protected Void doInBackground(Void... params) {
    applist = checkForLaunchIntent(packageManager.getInstalledApplications(PackageManager.GET_META_DATA));
    listadaptor = new ApplicationAdapter(MainActivity.this,R.layout.snippet_list_row, applist);

    return null;
}

@Override
protected void onCancelled() {
    super.onCancelled();
}

protected void onDestroy() {
    if(progress!=null)
        if(progress.isShowing()){
        progress.dismiss();
        }

}

@Override
protected void onPostExecute(Void result) {
    setListAdapter(listadaptor);
    progress.dismiss();
    super.onPostExecute(result);
}

@Override
protected void onPreExecute() {
    progress = ProgressDialog.show(MainActivity.this, null,
            "Caricamento applicazioni in corso...");
    super.onPreExecute();
}

@Override
protected void onProgressUpdate(Void... values) {
    super.onProgressUpdate(values);
}

}

所以listadaptor是我的適配器。有人可以幫助我嗎? 謝謝

試試這個..

        ArrayList<String> type_name_copy = new ArrayList<String>();
       inputSearch.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
        }

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

        @Override
        public void afterTextChanged(Editable theWatchedText) {
            ArrayList<String> type_name_filter = new ArrayList<String>();

            String text = theWatchedText.toString();

            for (int i = 0; i < array.size(); i++) {

                if ((array.get(i).toLowerCase()).contains(text
                        .toLowerCase())) {
                    type_name_filter.add(array.get(i));

                }
            }

            type_name_copy = type_name_filter;

            listUpdate(type_name_copy);
        }
    });

}

public void listUpdate(ArrayList<String> data) {
    lv.setAdapter(new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, data));

}
}

我建議您使用AutocompleteTextView,它是具有內置android搜索功能的Edittext。

暫無
暫無

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

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