我有一个项目列表,我想根据该项目启动其他活动,当我单击它时,它将打开正确的活动,但是当我尝试从搜索视图栏中搜索列表项目时,它将打开错误的活动.
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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)