0

我有一个 ListView 填充了 ArrayAdapter 的数据,并且我实现了一个搜索功能,因为列表很长。

假设我有这个列表:

0 - 橙色 1 - 苹果 2 - 番茄 3 - 鳄鱼 4 - 火车 5 - 海龟 6 - 狗 7 - 猫

好的,现在在我用来过滤这个列表的 EditText 中,我写了一个t. 然后,列表将是:

0 - 番茄 1 - 火车 2 - 乌龟

问题是我已经实现了一个onItemClickListener,以便我可以根据项目访问一个页面或另一个页面,当我单击第一个( 0 - tometoe )时,它会选择列表中第一个元素的( 0 )没有过滤(0 - 橙色),当我点击第二个(1 - 火车)时,它会选择列表中第一个元素的(1)而不过滤(1 - 苹果)等等......

这是我正在使用的代码:

ListView lv = new ListView(this);
        final String[] tricks;

        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.listviewcustom, tricks);

        lv.setAdapter(adapter);

        lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(android.widget.AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                showTrick(arg2, tricks[arg2], modality);
                //Log.e("itemClickListener", String.valueOf("LISTVIEWJ     " + arg2 + " - " + tricks[arg2] + " - " + modality));
            }
        });

        searchBox.addTextChangedListener(new TextWatcher() {

            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                adapter.getFilter().filter(cs);
            }

            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { }

            public void afterTextChanged(Editable arg0) { }
        });

        tricksLayout.addView(lv, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

所以我的问题是:我怎样才能让它按我的意愿工作?

谢谢你的好处!

4

1 回答 1

1

我没有完全理解你的问题。这是我从您的问题中理解的答案,如果不是您所要求的发表评论,我将编辑我的答案。

制作一个 ArrayList 并填充它。

ArrayList<String> list = new ArrayList<String>();

list.add("orange"); //1
list.add("apple"); //2
list.add("tomatoe"); //3
list.add("alligator"); //4
list.add("train"); //5

在过滤器上,您会得到这样的列表视图 0 - 番茄 1 - 火车 2 - 海龟

现在在 onItemClickListener 上单击位置 1

String temp =  here you get "train" at index 1 
//temp = "train"

int i = termsList.indexOf("train"); 
// it will give you actual position of train which is 5

已编辑

也用于notifyDataSetChanged正确更新列表。

于 2012-11-28T21:40:29.660 回答