/ / Problèmes lors de l’ouverture de la listeAfficher des éléments avec l’intention de Android Studio - Android, Listview, Android-Studio

Problèmes lors de l'ouverture de la listeAfficher des éléments d'intention dans Android Studio - Android, Listview, Android-Studio

J'ai une listView avec 2 éléments dans la liste, lele premier élément en position 0 répond aux clics mais l'autre pas! J'ai essayé de copier la même méthode onclick et changé l'instruction if en élément de liste en position 1, mais cela ne fonctionne pas pour moi. Je cherche donc à obtenir un résultat si quelqu'un pouvait m'aider? J'ai inclus le seul code nécessaire pour résoudre ce problème,

public class TopLevelActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_top_level);
//Create an OnItemClickListener
AdapterView.OnItemClickListener itemClickListener =
new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> listView,
View v,
int position,
long id) {
if (position == 0) {
Intent intent = new Intent(TopLevelActivity.this,
DrinkCategoryActivity.class);
startActivity(intent);
}
}
};
//Add the listener to the list view
ListView listView = (ListView) findViewById(R.id.list_options);
listView.setOnItemClickListener(itemClickListener);


//what ive tried to open the foodCategoryActivity list item

AdapterView.OnItemClickListener itemClickListener =
new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> listView,
View v,
int position,
long id) {
if (position == 1) {
Intent intent = new Intent(TopLevelActivity.this,

FoodCategoryActivity.class);
startActivity(intent);
}
}
};
//Add the listener to the list view
ListView listView = (ListView) findViewById(R.id.list_options);
listView.setOnItemClickListener(itemClickListener);
}
}

Je vous remercie.

Réponses:

2 pour la réponse № 1

Actuellement, en utilisant deux écouteurs de clic différents pour le même ListView pour faire différents sur des éléments différents, cliquez dans ListView with n’est pas un moyen valide d’exécuter une tâche en fonction de la position du clic dans ListView.

Utilisez un écouteur à un clic et à l'intérieur onItemClick method use switch-case ou if-else ladder pour des tâches telles que:

AdapterView.OnItemClickListener itemClickListener =
new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> listView,
View v,
int position,
long id) {
if (position == 0) {

}
else  if (position == 1) {{

}
}
};

et aussi supprimer la ligne suivante que vous utilisez deux fois:

ListView listView = (ListView) findViewById(R.id.list_options);
listView.setOnItemClickListener(itemClickListener);

car pas besoin de créer listView et appeler setOnItemClickListener plusieurs fois il suffit de le faire une fois.


2 pour la réponse № 2

Vous ne pouvez définir qu'un seul OnItemClickListener

vous devez différencier la méthode implémentée via la position ou l'objet View lui-même:

AdapterView.OnItemClickListener itemClickListener =
new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> listView,
View v,
int position,
long id) {
if (position == 0) {
//code for drink category
}
else {
//code for food category
}
}
};
//Add the listener to the list view
ListView listView = (ListView) findViewById(R.id.list_options);
listView.setOnItemClickListener(itemClickListener);