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

在Android的字符串类型listview上实现searchview,第1张

概述我有一个项目列表,我想根据该项目启动其他活动,当我单击它时,它将打开正确的活动,但是当我尝试从搜索视图栏中搜索列表项目时,它将打开错误的活动.listView=(ListView)findViewById(R.id.listView);sv=(SearchView)findViewById(R.id.searchView1);String[]va

我有一个项目列表,我想根据该项目启动其他活动,当我单击它时,它将打开正确的活动,但是当我尝试从搜索视图栏中搜索列表项目时,它将打开错误的活动.

    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;        }    });

我对编码了解不多,但是任何人都可以解决我的问题.

解决方法:

您是根据职位开始活动的,但是搜索时职位会发生变化,因为列表会缩小,职位也会发生变化,因此要获取与列表中指定位置相关联的数据,请使用getItemAtPosition

所以根据数据改变条件

 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);            }

注意:您也可以使用switch代替长if或else-if梯子

例如,您有三个字符串

item 1   position 0item 2   position 1item 3   position 2

搜索完项目2后,您的列表中有两个值接近搜索范围

item 2   position 0item 3   position 1

所以位置会改变,所以不要使用它,而是使用数据

       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);                }            }        });
总结

以上是内存溢出为你收集整理的在Android的字符串类型listview上实现searchview全部内容,希望文章能够帮你解决在Android的字符串类型listview上实现searchview所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1091356.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存