Android listview搜索没有返回正确的相应活动的结果



我有一个列表视图与相应的活动,开始时,你点击每个项目。但是,当我实现setTextFilterEnabled(true)时,单击结果时,不会启动正确的活动。我读过一些关于不使用"position"的文章,但这是什么意思呢?我如何纠正这个问题?

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

解决办法很简单,我在网上找了半天才找到。只需添加:

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

onItemClickListener

最新更新