如何在android studio中搜索我的自定义列表视图?

时间:2017-08-29 04:34:45

标签: java android listview listviewitem addtextchangedlistener

这是来自Main Activity类。我有一个数组的arraylist,需要为listview创建一个搜索栏。

  adapter = new ArrayAdapter<String[]>(this, R.layout.list_view, android.R.id.text1, spellList)
    {
        public View getView(int position, View convertView, ViewGroup parent)
        {
            View view = super.getView(position, convertView, parent);

            String[] entry = spellList.get(position);
            TextView text1 = (TextView) view.findViewById(android.R.id.text1);
            TextView text2 = (TextView) view.findViewById(android.R.id.text2);
            text1.setText(entry[0]);
            text2.setText(entry[1]);

            return view;
        }
    };
    wizList.setAdapter(adapter);

    searchText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }


        @Override
        public void afterTextChanged(Editable s) {

        }
    });

这是字符串数组的Arraylist中的数据。如果通过法术名称搜索,则首选。

final ArrayList<String[]> spellList;

public WizardDatabase()
{
    spellList = new ArrayList<>();

    spellList.add(new String[] { "Resistance", "Subject gains +1 on saving throws."});
    spellList.add(new String[] { "Acid Splash", "Orb deals 1d3 acid damage."});
    spellList.add(new String[] { "Detech Poison", "Detects poison in one creature or small object."});

public ArrayList<String[]> getList()
{
    return spellList;
}

感谢。

1 个答案:

答案 0 :(得分:0)

如果只是简单的字符串搜索,请使用以下代码

searchText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }


        @Override
        public void afterTextChanged(Editable s) {
            if (s.length() > 3) { // it's for performance I've put 3 you can change it 
                adapter.getFilter().filter(s.toString());
            }
        }
    });