如何在列表视图onItemClick,基于项目而不是基于位置,特别是在过滤后?

时间:2014-08-19 05:02:56

标签: listview search android-intent filter onitemclick

我有一个包含12行的listView。点击后的每一行都进入一个新活动,而不是12个活动,而是一个名为Content.java的活动(通过编码更改内容)。但是在应用搜索过滤器之后,例如,如果我在列表中有A,B和C,当我在editText中输入B时,我实际上将B作为剩余行,但是在点击之后它转到A活动。 问题是:我如何使我的OnItemClickListener意图基于项而不是基于位置? 这是我的代码:

Subjects_total_number = global.Subjects_total_number;
            Subjects = new String[Subjects_total_number];
            for(int x = 1; x < Subjects_total_number+1; x = x+1) {
                    String this_subject = "subject_" + String.valueOf(x);
        int resID = getResources().getIdentifier(this_subject, "string", getPackageName());
                    Subjects[x-1] = getResources().getString(resID);
    }

            setListAdapter(new MyAdapter(this,
                            android.R.layout.simple_list_item_1, R.id.textView1,
                            Subjects));    

               // set the OnItemClickListener

            lv = getListView();
            lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, final View view,
            int position, long id) {                       
                    Intent i = new Intent(getApplicationContext(), Show_Subjects.class);
                    String Subject_number = String.valueOf(position+1);
                    i.putExtra("subject_number", Subject_number);
                    startActivity(i);
                    overridePendingTransition(R.anim.slide_left_to_right_forw, R.anim.slide_right_to_left_forw);
        }

      });

1 个答案:

答案 0 :(得分:0)

当你在edittext中输入B时,你的列表视图数据不会改变,只是视图(你看到的东西)会发生变化。如果您希望列表视图具有数据发布过滤器,请在listview适配器(MyAdapter)上调用notifydatasetChanged。基本上,当您在edittext中输入文本时会发生的事情是列表视图显示已过滤的选项,但列表视图保持不变。