Il s'agit d'une méthode pour modifier le traitement en fonction de la liste touchée lorsque le ListView a plusieurs listes comme indiqué ci-dessous.
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/food"
android:id="@+id/food"></ListView>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/drink"
android:id="@+id/drink"></ListView>
Lorsque vous touchez la liste des aliments, "L'aliment que vous avez choisi est XX", Lorsque vous touchez la liste des boissons, essayez de porter un toast qui affiche "La boisson que vous avez choisie est XX".
strings.xml
<resources>
<string name="app_name">ListView</string>
<string name="text_food">capuche</string>
<string name="text_drink">Boisson</string>
<string-array name="food">
<item>Viande</item>
<item>poisson</item>
</string-array>
<string-array name="drink">
<item>jus</item>
<item>thé</item>
</string-array>
</resources>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/text_food"/>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/food"
android:id="@+id/food"></ListView>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/text_drink"/>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/drink"
android:id="@+id/drink"></ListView>
</LinearLayout>
MainActivity.java
package com.websarva.wings.android.listview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView foodListView = findViewById(R.id.food);
ListView drinkListView = findViewById(R.id.drink);
foodListView.setOnItemClickListener(new ListItemClickListener());
drinkListView.setOnItemClickListener(new ListItemClickListener());
}
/**
*Traitement lorsque l'élément est enfoncé dans ListView
*/
private class ListItemClickListener implements AdapterView.OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
ListView foodList = findViewById(R.id.food);
ListView drinkList = findViewById(R.id.drink);
String item = (String) parent.getItemAtPosition(position);
String show;
if(parent == foodList){
show = "La nourriture que vous choisissez" + item;
Toast.makeText(MainActivity.this,show,Toast.LENGTH_LONG).show();
}
if (parent == drinkList){
show = "La boisson que vous choisissez" + item;
Toast.makeText(MainActivity.this,show,Toast.LENGTH_LONG).show();
}
}
}
}
Puisque le pain grillé affiché à gauche a touché la viande, "L'aliment que vous avez choisi est XX" s'affiche, Le toast affiché à droite touchait le jus, donc "Vous l'avez choisi, donc la boisson est XX" Est affiché.
private class ListItemClickListener implements AdapterView.OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
ListView foodList = findViewById(R.id.food);・ ・ ・ ➀
ListView drinkList = findViewById(R.id.drink);・ ・ ・ ➀
String item = (String) parent.getItemAtPosition(position);
String show;
if(parent == foodList){・ ・ ・ ➁
show = "La nourriture que vous choisissez" + item;
Toast.makeText(MainActivity.this,show,Toast.LENGTH_LONG).show();
}
if (parent == drinkList){・ ・ ・ ➁
show = "La boisson que vous choisissez" + item;
Toast.makeText(MainActivity.this,show,Toast.LENGTH_LONG).show();
}
}
}
Utilisez la méthode findViewById pour obtenir l'ID de chaque ListView afin de déterminer quelle liste a été touchée.
Comparez l'ID obtenu dans ➀ avec le parent, déterminez le ListView touché et exécutez le processus.