J'ai un problème avec mon ListView onClick. J'essaye de t'expliquer par une particule de mon code.

Donc quand je filtre en cherchant c par exemple l'activitéA s'ouvre, la même chose avec l'activité B. Donc pendant le filtrage ils prennent la position 0. Parce que sans filtrer chaque clic ouvre la bonne activité. Alors, comment puis-je résoudre ce problème?


private SearchView sv;

Protected void onCreate........

String[] Values = {"a","b","c"};
listView = findViewById(R.id.liste);

sv=findViewById(R.id.searchview);

ArrayAdapter<String>......(.simple_list_item_2,android.R.id.text1,Values);
listView.setAdapter;
sv.setOnQueryTextListener........
//everything here is ok it's filtering well.
//After that,I've my listview.onClick 
listview.setOnItemClickListener()
........(parent, View view, int position, long id){
   if(position == 0){ 
     Itent a = new Intent (getApplicationContext(),AtivityA.class);
startActivity(a)
  }

  if(position == 1){ 
     Intent b = new Intent  (getApplicationContext(),AtivityB.class);
startActivity(b)
  }

 if(position == 2){ 
     Intent c = new Intent (getApplicationContext(),AtivityC.class);
startActivity(c)
  } 
}```
1
Davhy Mouyaka 31 mai 2020 à 22:54

2 réponses

Je ne sais pas si cela aidera, mais j'utiliserais un commutateur au lieu d'instructions if.

    switch (position) {
        case 0:
            Intent a = new Intent  (getApplicationContext(),AtivityA.class);
            startActivity(a)
            break;
        case 1:
            Intent b = new Intent  (getApplicationContext(),AtivityB.class);
            startActivity(b)
            break;
        case 2:
            Intent c = new Intent  (getApplicationContext(),AtivityC.class);
            startActivity(c)
            break;

    }
0
LokiFK 31 mai 2020 à 20:32
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.//item:
                startActivity(new Intent(this, ActivityA.class));
                return true;
            case R.id.//item:
                startActivity(new Intent(this, ActivityB.class));
                return true;
            case R.id.//item:
                startActivity(new Intent(this, ActivityC.class));
                return true;
             default:
                return super.onOptionsItemSelected(item);
        }
    }
0
LokiFK 31 mai 2020 à 20:41
62121722