android中如何基于edittext值更新listview

android中如何基于edittext值更新listview,android,android-listview,Android,Android Listview,我有edittext,下面是一个listview,如果需要根据edittext上的文本搜索,我需要更新列表视图。存储在arraylist中的listview值 这是我的应用程序中的搜索功能,希望你能从中了解他的想法 et_artists_searchWord.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int star

我有edittext,下面是一个listview,如果需要根据edittext上的文本搜索,我需要更新列表视图。存储在arraylist中的listview值


这是我的应用程序中的搜索功能,希望你能从中了解他的想法

et_artists_searchWord.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            // TODO Auto-generated method stub

            List<AdapterDTOArtist> list = filter(s.toString(),
                    mAdapterDTOsBackup, true);
            mAdapterDTOs.clear(); // <--- clear the list before add
            mAdapterDTOs.addAll(list); // <--- here is the double add if
                                        // you// do not clear before
            mLazyAdatper.setDataSet(mAdapterDTOs);
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });
et\u artists\u searchWord.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列,int start,int before,
整数计数){
//TODO自动生成的方法存根
列表=过滤器(s.toString(),
mAdapterDTOsBackup,true);

mAdapterDTOs.clear();//使用筛选。如果使用的是
ArrayAdapter
,则可以使用
adpter.getFilter().filter(…)
…你能再解释一下吗?如何从edittext传递值以及如何获取搜索值请参见。这与你的问题类似…不要泄气,在提问之前尝试在google上搜索一下。这是来自
public static List<AdapterDTOArtist> filter(String string,
        Iterable<AdapterDTOArtist> iterable, boolean byName) {
    if (iterable == null)
        return new LinkedList<AdapterDTOArtist>();
    else {
        List<AdapterDTOArtist> collected = new LinkedList<AdapterDTOArtist>();
        Iterator<AdapterDTOArtist> iterator = iterable.iterator();
        if (iterator == null)
            return collected;
        while (iterator.hasNext()) {
            AdapterDTOArtist item = iterator.next();
            // if(item.getmTag_Name().startsWith(string))
            if (item.getmTag_Name().toLowerCase().startsWith(string)){
                // if
                // (item.getmTag_Name().toLowerCase(Locale.getDefault()).contains(string))
                collected.add(item);
            }
            else if(item.getmTag_Name().toUpperCase().startsWith(string)){
                collected.add(item);
            }
        }
        return collected;
    }
}