用onClick显示错误结果的Listview搜索

时间:2015-05-06 18:15:49

标签: java android arrays listview

我不知道我是不是只是放了一个脑屁或什么,但我很难过。我有一个listView,由一个包含搜索功能的字符串数组填充。当用户单击listView项时,将出现一个对话框,其中包含与该项相关的信息。一切正常,直到我搜索,搜索本身工作并带来正确的结果。 Onclick开关盒无需搜索即可工作。输入搜索时出现的问题现在假设数组中的数字为0,并且当搜索到的项目位于列表的下方时,显示[0]数组项的信息。假设我有一个包含字符串a,b,c的数组。 onClick对话框默认工作,但是当我搜索" b"然后点击它显示" a"的信息。因为b现在位于列表的顶部,并且" a"已经消失了。

<string-array name="letters">
    <item>A</item>
    <item>B</item>
    <item>C</item>
</string-array>

构建
adapter = new ArrayAdapter<CharSequence>(this,
            android.R.layout.simple_list_item_1, getResources()
                    .getTextArray(R.array.letters));

搜索功能

        searchText.addTextChangedListener(new TextWatcher() {

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

            adapter.getFilter().filter(s);

        }

        @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
            // DoNotCrush.this.adapter.getFilter().filter(s);
        }
    });

和onClick

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            switch (position) {
            case 0:
                showDialog();
                //do stuff
                break;
            case 1:
                showDialog();
                //do stuff
                break;
            case 2:
                showDialog();
                //do stuff
                break;
}
        }
    });

我假设它全部在switch语句中并且不使用位置变量,但我不知道还有什么用,因为我没有;我认为你可以将id分配给item一个字符串数组。任何帮助将被赞赏只是指出我正确的方向。

编辑:感谢JARP,我的代码正常运行。我扔了开关并使用了if语句。

String a = parent.getAdapter().getItem(position).toString(); <-JARP'S idea
if (a.equals("Some string")){
   //Do This
}else if(a.equals("Another string")){
   //Do This
}

这种方式似乎很多工作,因为我的listview有超过100种可能性,但这是我可以使用可搜索的编辑文本的唯一方法。

1 个答案:

答案 0 :(得分:0)