我的筛选列表项打开了错误的活动

时间:2017-02-21 09:17:08

标签: android

我将textBox添加到我的应用程序以过滤ListView项目,所以当我在textBox中键入文本时它会正常过滤但是当我尝试选择过滤项目时,它会在过滤器之前打开原始位置的活动而不是在过滤后的帖子。

@Override
public void onCreate(Bundle savedInstanceState) {

 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 AdView mAdView = (AdView) findViewById(R.id.adView);
 AdRequest adRequest = new AdRequest.Builder().build();
 mAdView.loadAd(adRequest);

 inputSearch = (EditText) findViewById(R.id.inputSearch);

 String[] ciwaananadaGabayada = getResources().getStringArray(R.array.gabayada_array);
 mListView = (ListView) findViewById(R.id.listView1);
 // Adding items to listview
 adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.gabay_item, ciwaananadaGabayada);
 mListView.setAdapter(adapter);
 mListView.setTextFilterEnabled(true);

 //Enabling Search Filter
 inputSearch.addTextChangedListener(new TextWatcher() {

  @Override
  public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
   // When user changed the text
   MainActivity.this.adapter.getFilter().filter(charSequence);
   adapter.notifyDataSetChanged();
   //adapter.getFilter().filter(charSequence);
  }

  @Override
  public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

  }


  @Override
  public void afterTextChanged(Editable editable) {

  }
 });

 mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {


         switch (position) {
             case 0:
                 Intent newActivity = new Intent(MainActivity.this, Xuseenow_caqligu.class);
                 startActivity(newActivity);
                 break;

             case 1:
                 Intent newActivity1 = new Intent(getApplicationContext(), dhurwaa_adhiga.class);
                 startActivity(newActivity1);
                 break;

             case 2:
                 Intent newActivity2 = new Intent(getApplicationContext(), xuseenowAqoonXume.class);
                 startActivity(newActivity2);
                 break;

1 个答案:

答案 0 :(得分:0)

您正在OnItemClickListener中使用位置,假设您的列表包含3个元素,当您筛选列表并且列表显示一个项目然后您单击该项目时,此情况下的位置相同而非其实际位置过滤器列表列表是3或2,因此在这种情况下你总是得到0位置。

为此,您需要使用您拥有的位置获取已过滤列表的DataItem,然后检查您要为DataItem中的值打开哪个活动。

相关问题