使用我的ListView搜索EditText不起作用

时间:2013-06-18 14:29:22

标签: android listview search textedit

我想创建一个带有EditText作为搜索栏的ListView。 我的ListView包含不同类型的自定义单元格(每个单元格只有一个字符串)所以我使用了一个ArrayAdapter,如下所示:

LayoutInflater inflater;
MyAdapter adapter;

// Then...

private class MyAdapter extends ArrayAdapter<String>
{
    String[] cellData;

    public MyAdapter(Context context, int resource, int textViewResourceId, String[] objects)
    {
        super(context, resource, textViewResourceId, objects);
        cellData = objects;
    }

    @Override
    public View getView(int position, View view, ViewGroup parent)
    {
        View viewCE = inflater.inflate(R.layout.my_cell, parent, false);
        ((TextView) viewCE.findViewById(R.id.text_my_cell)).setText(cellData[position]);
        view = viewCE;
        return view;
    }
}

这非常有效。 然后我尝试将它与我的EditText字段混合,所以我在我的活动中声明了它:

EditText inputSearch;

然后,在textChanged方法上添加了一个过滤器:

inputSearch.addTextChangedListener(new TextWatcher() {

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

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

        }

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

问题如下。例如,如果我的列表包含:

  

4月1月4月

如果我在搜索字段中写“Y”,我应该只获得JANUARYMAY。 但不是这样,我得到APRILDECEMBER。 事实上,我得到了确切的数据量(这里是2行),但是从列表的开头开始。 我该怎么办?感谢。

1 个答案:

答案 0 :(得分:0)

好的,最后得到了答案,需要使用adapter.getItem(position)代替cellData[position]