[JAVA] So ändern Sie den Prozess in Abhängigkeit von der Liste, die gedrückt wird, wenn mehrere ListViews vorhanden sind

Einführung

Dies ist eine Methode zum Ändern der Verarbeitung in Abhängigkeit von der berührten Liste, wenn die ListView mehrere Listen enthält, wie unten gezeigt.

<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

Wenn Sie die Liste der Lebensmittel berühren, "Das Lebensmittel, das Sie ausgewählt haben, ist XX", Wenn Sie die Getränkekarte berühren, versuchen Sie, einen Toast mit der Aufschrift "Das von Ihnen ausgewählte Getränk ist XX" zuzubereiten.

strings.xml


<resources>
    <string name="app_name">ListView</string>
    <string name="text_food">Kapuze</string>
    <string name="text_drink">Trinken</string>
    <string-array name="food">
        <item>Fleisch</item>
        <item>Fisch</item>
    </string-array>
    <string-array name="drink">
        <item>Saft</item>
        <item>Tee</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());
    }

    /**
     *Verarbeitung, wenn das Element in ListView gedrückt wird
     */
    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 = "Das Essen, das Sie wählen" + item;
                Toast.makeText(MainActivity.this,show,Toast.LENGTH_LONG).show();
            }

            if (parent == drinkList){
                show = "Das Getränk, das Sie wählen" + item;
                Toast.makeText(MainActivity.this,show,Toast.LENGTH_LONG).show();
            }
        }
    }
}

Ausführungsergebnis

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

Da der links angezeigte Toast das Fleisch berührt hat, wird "Das von Ihnen gewählte Essen ist XX" angezeigt. Der Toast auf der rechten Seite berührte den Saft. "Sie haben ihn gewählt, also ist das Getränk XX." Wird angezeigt.

Kommentar

 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 = "Das Essen, das Sie wählen" + item;
                Toast.makeText(MainActivity.this,show,Toast.LENGTH_LONG).show();
            }

            if (parent == drinkList){・ ・ ・ ➁
                show = "Das Getränk, das Sie wählen" + item;
                Toast.makeText(MainActivity.this,show,Toast.LENGTH_LONG).show();
            }
        }
    }

➀ Holen Sie sich die ListView ID

Verwenden Sie die findViewById-Methode, um die ID jeder ListView abzurufen und festzustellen, welche Liste berührt wurde.

➁ Ändern Sie die Verarbeitung abhängig von der berührten ListView

Vergleichen Sie die in ➀ erhaltene ID mit der übergeordneten ID, bestimmen Sie die berührte ListView und führen Sie den Prozess aus.

Recommended Posts

So ändern Sie den Prozess in Abhängigkeit von der Liste, die gedrückt wird, wenn mehrere ListViews vorhanden sind
Ändern Sie die Verarbeitung, wenn Sie für jede Liste auf die Schaltfläche in RecyclerView klicken
So ändern Sie die Aktion mit mehreren Senden-Schaltflächen
[Ruby on Rails] So ändern Sie den Spaltennamen
So führen Sie einen bestimmten Vorgang aus, wenn die Zurück-Taste im Android-Fragment gedrückt wird
[Swift] So ändern Sie dynamisch die Höhe der Symbolleiste auf der Tastatur
So geben Sie den Wert aus, wenn sich ein Array im Array befindet
[Rails 5] Anzeigen des Bildschirms zum Ändern des Kennworts bei Verwendung von devise
[JPA] Speichern, wenn Sie andere Elemente als Schlüssel in der Schnittpunkttabelle haben, die sich auf ManyToMany beziehen
[Docker] Erstellen, wenn der Quellcode auf dem Container gebunden ist
Verarbeitung, um zu überprüfen, ob "einige Felder dupliziert sind" aus der Bean-Liste
So sortieren Sie eine Liste von SelectItems
So löschen Sie die Datenbank beim Neuerstellen der App
So installieren Sie mehrere JDKs unter Ubuntu 18.04 LTS
[Java] Memo zum Schreiben der Quelle
[Rails / Eindeutigkeitsbeschränkung] Überprüfen der Modellvalidierung auf der Konsole / Eindeutigkeitsbeschränkung für mehrere Spalten
So löschen / aktualisieren Sie das Listenfeld von OneToMany
Führen Sie auf, wie Sie in AWS von Docker zu AKS lernen können
[Rails] So ändern Sie den Spaltennamen der Tabelle
Installieren Sie MySQL 5.6 unter CentOS6 [So geben Sie die Version an]
So reduzieren Sie die Programmlast ein wenig, wenn Sie Zeichen mit JAVA kombinieren
Wenn Sie die Hauptzweiginformationen in dem aktuellen Zweig wiedergeben möchten, an dem Sie gerade arbeiten