在字符串类型listview Android上实现searchview

在字符串类型listview Android上实现searchview,android,listview,searchview,Android,Listview,Searchview,我有一个项目列表,我想在项目的基础上启动不同的活动,当我单击它时会打开正确的活动,但当我尝试从搜索视图栏搜索列表项目时,它会打开错误的活动 listView = (ListView) findViewById(R.id.listView); sv=(SearchView) findViewById(R.id.searchView1); String[] values = new String[]{item1,item2,item3,item4,} final Ar

我有一个
项目列表
,我想在
项目
的基础上启动不同的活动,当我单击它时会打开正确的活动,但当我尝试从搜索视图栏搜索列表项目时,它会打开错误的活动

    listView = (ListView) findViewById(R.id.listView);
    sv=(SearchView) findViewById(R.id.searchView1);
    String[] values = new String[]{item1,item2,item3,item4,}
    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_2, android.R.id.text1, values);
    listView.setAdapter(adapter);
    //linking from 1 item to other activity stars with if options//
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            if (position == 0) {
                Intent myIntent = new Intent(view.getContext(), activity1.class);
                startActivityForResult(myIntent,0);
            }

            if (position == 4) {
                Intent myIntent = new Intent(view.getContext(), aactivity4.class);
                startActivityForResult(myIntent,0);

            }
        }
    });

    sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String text) {
            // TODO Auto-generated method stub
            return false;
        }
        @Override
        public boolean onQueryTextChange(String text) {
            adapter.getFilter().filter(text);
            return false;
        }
    });
listView=(listView)findViewById(R.id.listView);
sv=(SearchView)findviewbyd(R.id.SearchView 1);
字符串[]值=新字符串[]{item1,item2,item3,item4,}
最终ArrayAdapter适配器=新的ArrayAdapter(此,
android.R.layout.simple_list_item_2,android.R.id.text1,值);
setAdapter(适配器);
//使用if选项从1个项目链接到其他活动星//
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
如果(位置==0){
Intent myIntent=newintent(view.getContext(),activity1.class);
startActivityForResult(myIntent,0);
}
如果(位置==4){
Intent myIntent=newintent(view.getContext(),aactivity4.class);
startActivityForResult(myIntent,0);
}
}
});
sv.setOnQueryTextListener(新的SearchView.OnQueryTextListener(){
@凌驾
公共布尔值onQueryTextSubmit(字符串文本){
//TODO自动生成的方法存根
返回false;
}
@凌驾
公共布尔值onQueryTextChange(字符串文本){
adapter.getFilter().filter(文本);
返回false;
}
});

我对编码知之甚少,但任何人都能解决我的问题。

您是根据
位置开始您的活动的,但是
位置将在您进行搜索时更改,因为列表将缩小,并且
位置将更改,以便获取与列表中指定位置相关的数据

因此,根据数据改变条件

 if (parent.getItemAtPosition(position).equals("item1")) {
                Intent myIntent = new Intent(view.getContext(), activity1.class);
                startActivityForResult(myIntent,0);
            }

else if (parent.getItemAtPosition(position).equals("item2")) { // use any item value here you want 
                Intent myIntent = new Intent(view.getContext(), aactivity4.class);
                startActivityForResult(myIntent,0);
            }
注意:如果
或如果
梯形图,您也可以使用
开关
代替long
if
else

e、 你有三根绳子

item 1   position 0
item 2   position 1
item 3   position 2
搜索项目2后,列表中有两个值靠近搜索

item 2   position 0
item 3   position 1
所以位置会改变,所以不要使用它,而是使用数据

代码

listView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
意向=无效;
//类的全局字符串
selectedValue=String.valueOf(parent.getItemAtPosition(position));
if(selectedValue.equals(“item1”)){
//^^^在此处使用所需的任何项目值
Intent myIntent=newintent(view.getContext(),activity1.class);
startActivityForResult(myIntent,0);
}
else if(selectedValue.equals(“item2”)){
Intent myIntent=newintent(view.getContext(),aactivity4.class);
startActivityForResult(myIntent,0);
}
}
});

那么,我该怎么做呢?@WAQARALAM您只需将您的
代码替换为我的代码,并为所有项目添加所有案例,尝试代码演示部分它不会改变任何东西,它仍在考虑position@WAQARALAM如果这个问题还没有解决,请告诉我。非常感谢兄弟。{我想我的问题已经解决了。}你的工作非常出色……我喜欢你快速回答我所有问题的方式……再次感谢。。。
       listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                Intent intent = null;
                // global string to class
                selectedValue = String.valueOf(parent.getItemAtPosition(position));

                if (selectedValue.equals("item1")) {
                                        // ^^^  use any item value here you want
                    Intent myIntent = new Intent(view.getContext(), activity1.class);
                    startActivityForResult(myIntent,0);
                }

                else if (selectedValue.equals("item2")) {
                    Intent myIntent = new Intent(view.getContext(), aactivity4.class);
                    startActivityForResult(myIntent,0);
                }
            }
        });