ListView auslesen ohne sie anzuklicken?

  • Antworten:6
Frank Rudolf
  • Forum-Beiträge: 215

31.01.2018, 11:22:12 via Website

Ich habe eine ListView, in der Datensätze einer SQlite-Tabelle dargestellt werden. Selbstverständlich ist jeder Eintrag in dieser Listview über eine ID-Spalte mit der dazugehörigen SQlite-Tabelle verbunden.

Ich möchte nun diese ID auslesen, ohne einen Listeneintrag anzuklicken. Dabei ist es vollkommen egal, auf welchen der Einträge in der ListView ich zugreife. Falls nötig, werde ich also immer auf die Position 0 (erster Eintrag in der ListView) zugreifen.

Normalerweise holt man sich die konkreten Daten über einen Adapter. Aber das geht wohl nicht, ohne die ListView anzuklicken?

Angelegt wird die ListView bereits mit einem Adapter:

private void showSpecialListEntries (long id) {
        List<Info> infoList = dataSource.getSpecialInfos(id);

        ArrayAdapter<Info> adapter = (ArrayAdapter<Info>;) mInfosListView.getAdapter();

        adapter.clear();
        adapter.addAll(infoList);
        adapter.notifyDataSetChanged();
    }

Statt des Zwinker-Smilie im Code: schließende Klammer.

— geändert am 31.01.2018, 11:33:57

Kommentieren
swa00
  • Forum-Beiträge: 3.704

31.01.2018, 11:27:09 via Website

Hallo FRank,

Basis für eine ListView ist ein Adapter (ArrayInhalt) und auf den kannst du jederzeit zugreifen.
(Das hast nichts mit einem Click zu tun)

Willst du mehrere Daten für einen ListView-Item verwenden , so musst du einen CustomAdapter
verwenden.
Aber auch bei diesem ist ein Array (List) Basis , die du auch jederzeit auswerten,verändern etc kannst .
.

EDIT : Du hast deinen Post jetzt erweitert , deshalb dieser Nachtrag :

Deklariere doch deine Arraylist übergeordnet, initialisiere den einmal und tausche lediglch darin deine Daten . Dann hast du jederzeit Zugriff darauf.

— geändert am 31.01.2018, 11:40:41

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Frank Rudolf
Kommentieren
Frank Rudolf
  • Forum-Beiträge: 215

31.01.2018, 11:42:28 via Website

Geht's vielleicht irgendwie hiermit:

Info info= (Info) mInfosListView.getItemAtPosition(0);

Ich will nur den Wert der ID-Spalte (irgendeiner Zeile der ListView).

Hilfreich?
Kommentieren
swa00
  • Forum-Beiträge: 3.704

31.01.2018, 11:45:52 via Website

Du hast leider das Konzept nicht verstanden und da auch ein Teil deines Sources fehlt,
vermag ich zu vermuten.

a) Mach dir eine übergeordnete Arraylist mit Info .
b) Fülle Diese mit deinen Info Daten
c) Übergebe diese Liste der ListView (Adapter) für das UI

Und dann ist es völlig egal, was die ListView macht, du kannst jederzeit auf dein Array zugreifen

— geändert am 31.01.2018, 11:46:50

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Frank Rudolf
Kommentieren
Frank Rudolf
  • Forum-Beiträge: 215

31.01.2018, 11:48:13 via Website

Info info= (Info) mInfosListView.getItemAtPosition(0);

Ich würde also mit obiger Code-Zeile ein Info-Objekt erstellen. Hier könnte ich vielleicht auf die ID des Objektes der im Code angesprochenen Zeile zugreifen?

Hilfreich?
Kommentieren
swa00
  • Forum-Beiträge: 3.704

31.01.2018, 12:05:20 via Website

Jain,

arbeite, wie oben schon erwähnt mit einer übergeordneten ArrayList und da kannst du mit get() arbeiten

ArrayList < Info > mylist;
.....
.....
....
Info infotmp = mylist.get(0);

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Pascal P.Frank Rudolf
Kommentieren
Frank Rudolf
  • Forum-Beiträge: 215

31.01.2018, 17:35:50 via Website

Ich hab's inzwischen ausprobiert. Der Zugriff über

Info info= (Info) mInfosListView.getItemAtPosition(0);

und einem nachfolgenden

info.getId();

funktioniert "Gott sei Dank" :) wie gewünscht.

— geändert am 31.01.2018, 17:36:27

Hilfreich?
Kommentieren