Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android listview搜索未为结果返回正确的对应活动_Android_Search_Listview - Fatal编程技术网

Android listview搜索未为结果返回正确的对应活动

Android listview搜索未为结果返回正确的对应活动,android,search,listview,Android,Search,Listview,我有一个列表视图,其中包含当您单击每个项目时开始的相应活动。但是,当我实现setTextFilterEnabled(true)时,单击的结果不会启动正确的活动。我读到一些关于不使用“位置”的文章,但这是什么意思?我如何纠正这个问题 public class Contactpage extends ListActivity { private static final int KEYBOARD = 0; public void onCreate(Bundle savedInstance

我有一个列表视图,其中包含当您单击每个项目时开始的相应活动。但是,当我实现setTextFilterEnabled(true)时,单击的结果不会启动正确的活动。我读到一些关于不使用“位置”的文章,但这是什么意思?我如何纠正这个问题

    public class Contactpage extends ListActivity {

private static final int KEYBOARD = 0;

public void onCreate(Bundle savedInstanceState) {       

    String[] people = getResources().getStringArray(R.array.people_array);
    setListAdapter(new ArrayAdapter<String>(this, R.layout.listtest, people));

    ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 


    final String[] email = getResources().getStringArray(R.array.details_array);
    final String[] number = getResources().getStringArray(R.array.number_array);

  //Intent after selection is made
    lv.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            String contenttt = email[position];
            String contentt = number[position];
            Intent showContent = new Intent(getApplicationContext(),
                    Viewer.class);

            Bundle b = new Bundle(); 
            b.putString("name",contenttt);
            showContent.putExtras(b);

            Bundle a = new Bundle(); 
            a.putString("number",contentt);
            showContent.putExtras(a);
            startActivity(showContent);
        }});}


    @Override
       public boolean onCreateOptionsMenu(Menu menu) {
           super.onCreateOptionsMenu(menu);
           menu.add(0, KEYBOARD, 0, R.string.menu_keyboard)
           .setIcon(android.R.drawable.ic_menu_search);
           return true;
       }
    @Override
       public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case KEYBOARD: {
    InputMethodManager imm = (InputMethodManager)
    Contactpage.this.getSystemService(Context.INPUT_METHOD_SERVICE);

if (imm != null){
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
}

        return true;}

       default: {
           return super.onOptionsItemSelected(item);}
           }
       }

}
公共类Contactpage扩展了ListActivity{
专用静态最终整数键盘=0;
创建时的公共void(Bundle savedInstanceState){
String[]people=getResources().getStringArray(R.array.people\u数组);
setListAdapter(新的ArrayAdapter(this,R.layout.listtest,people));
ListView lv=getListView();
lv.setTextFilterEnabled(真);
最终字符串[]email=getResources().getStringArray(R.array.details\u数组);
最后一个字符串[]number=getResources().getStringArray(R.array.number\u数组);
//选择后的意图
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
字符串contenttt=电子邮件[位置];
字符串content=编号[位置];
Intent showContent=新意图(getApplicationContext(),
观众(类别),;
Bundle b=新Bundle();
b、 putString(“名称”,contenttt);
showContent.putExtras(b);
Bundle a=新Bundle();
a、 putString(“数字”,content);
showContent.putExtras(a);
startActivity(showContent);
}});}
@凌驾
公共布尔onCreateOptions菜单(菜单){
super.onCreateOptions菜单(菜单);
添加菜单(0,键盘,0,R.string.menu\u键盘)
.setIcon(android.R.drawable.ic_菜单_搜索);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
机箱键盘:{
InputMethodManager imm=(InputMethodManager)
Contactpage.this.getSystemService(Context.INPUT\u METHOD\u SERVICE);
如果(imm!=null){
imm.toggleSoftInput(InputMethodManager.SHOW\u强制,0);
}
返回true;}
默认值:{
返回super.onOptionsItemSelected(item);}
}
}
}

这个解决方案很简单,是在网上搜寻后发现的。 只需添加:

    String name = lv1.getItemAtPosition(position).toString();
    for (int index = 0; index < people.length; index++)
    {
        if (name.equals(people[index]))
        {
            position = index;
            break;
        }
    }
String name=lv1.getItemAtPosition(position.toString();
for(int index=0;index

在onItemClickListener内部使用
position=position-listview.getFirstVisibleItem()
在开始使用
onitemclickedlistener()
eclipse的其余部分中的位置之前,我是否将其放在了setonitemclickedListener的前面?他们建议我使用GetFirstVisiblePosition在开始做任何事情之前将其放入
setOnItemClickListener()
中。嗯,我在第一个“位置”中得到了“此标记后预期的VariableDeclaratorId”?顺便说一句,我把你的行放在public void之前。如果我把它放在public void之后,它仍然不起作用,也许你的代码逻辑有问题。listview项上是否显示了
电子邮件
号码