[JAVA] Comment changer le processus en fonction de la liste appuyée lorsqu'il y a plusieurs ListViews

introduction

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>

code

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();
            }
        }
    }
}

Résultat d'exécution

新しいビットマップ イメージ.jpeg

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é.

Commentaire

 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();
            }
        }
    }

➀ Obtenez l'ID ListView

Utilisez la méthode findViewById pour obtenir l'ID de chaque ListView afin de déterminer quelle liste a été touchée.

➁ Modifier le traitement en fonction du ListView touché

Comparez l'ID obtenu dans ➀ avec le parent, déterminez le ListView touché et exécutez le processus.

Recommended Posts

Comment changer le processus en fonction de la liste appuyée lorsqu'il y a plusieurs ListViews
Modifier le traitement lorsque le bouton de RecyclerView est enfoncé pour chaque liste
Comment changer l'action avec plusieurs boutons d'envoi
[Ruby on Rails] Comment changer le nom de la colonne
Comment effectuer un processus spécifique lorsque le bouton de retour est enfoncé dans le fragment Android
[Swift] Comment modifier dynamiquement la hauteur de la barre d'outils sur le clavier
Comment afficher la valeur lorsqu'il y a un tableau dans le tableau
[Rails 5] Comment afficher l'écran de changement de mot de passe lors de l'utilisation de l'appareil
[JPA] Comment enregistrer lorsque vous avez des éléments autres que des clés dans la table d'intersection liés à ManyToMany
[Docker] Comment créer lorsque le code source est monté en liaison sur le conteneur
Traitement pour vérifier si "certains champs sont dupliqués" à partir de la liste des haricots
Comment trier une liste de SelectItems
Comment effacer la base de données lors de la recréation de l'application
Comment installer plusieurs JDK sur Ubuntu 18.04 LTS
[Java] Mémo sur la façon d'écrire la source
[Contrainte Rails / Unicité] Comment vérifier la validation du modèle sur la console / Contrainte d'unicité pour plusieurs colonnes
Comment supprimer / mettre à jour le champ de liste de OneToMany
Indiquez comment apprendre de Docker à AKS sur AWS
[Rails] Comment changer le nom de colonne de la table
Installez MySQL 5.6 sur CentOS6 [Comment spécifier la version]
Comment réduire même un peu la charge du programme lors de la combinaison de caractères avec JAVA
Lorsque vous souhaitez refléter les informations de la branche principale dans la branche actuelle sur laquelle vous travaillez actuellement