ListView - Daten anzeigen

S

Sycube

Neues Mitglied
0
Hallo,
ich arbeite im moment an einer App.

Leider komme ich jetzt an einer Stelle nicht weiter.

Ich habe eine ListView, die mit Daten aus einer MySQL Datenbank gefüllt ist.
Das Problem ist nun, dass ich nicht weiß wie ich abfrage welches Item in der ListView geklickt wurde.
Außerdem möchte ich, dass nach einem Klick auf ein Item der ListView automatisch eine neue Activity angezeigt werden soll, in der nochmals Daten aus einer MySQL Datenbank angezeigt werden sollen.

Sorry, ich bin noch ein Anfänger, aber ich hoffe jemand könnte mir helfen.
 
Servus Sycube,

du must einen ClickListener einbauen um diese Abfrage zu realisieren. Ich habe die hier mal eine TestAvtivity gebastelt welche das im groben Zeigt was du möchtest. Das übergeben der ID an die nächste Activity musst du natürlich noch implementieren, um die ID zu übergeben.

Code:
public class TestActivity extends Activity {

    private ListView mListView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);

        mListView = (ListView) findViewById(R.id.listView);
        setListener();
    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
    }

    // Setzd den ClickListener und immer wenn ein ELement aus der Liste geklickt
    // wird, wird onItemClick() aufgereufen
    private void setListener() {
        mListView.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                // Deklariere und initialisiere ein Intent zum starten der
                // Activity
                Intent intent = new Intent(view.getContext(),
                        YourActivity.class); // <-- YourActivity.class musst du
                                                // mit der Klasse deiner
                                                // Activity ersetzen
                intent.putExtra("id", value); // <-- Hier übergeben wir die ID
                                                // des ausgewählten Elements an
                                                // die aufzurufende Activity value
                                                // musst du ersetzen mit der variable
                                                // welche die id enthält
                startActivity(intent); // <-- Startet die Activity
            }
        });
    }
}
Auslesen der mitgelieferten Information muss du in der aufgerufenen Activity machen, am besten in der onCreate() Methode. Mit der ID kannst du dann genau das Element aus der DB abfragen was du ausgewählt hast und dir die Informationen von diesen holen.
Code:
public class YourActivity extends Activity {

    private int mId;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        mId = getIntent().getIntExtra("id", -1); // <-- hier holen wir über den
                                                    // Schlüssel "id" den Wert
                                                    // und wenn nix übergeben
                                                    // wurde liefern wir den
                                                    // Wert -1 zurück
    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
    }
}
Eine Idee zum implementieren der ID´s. Du legst eine ArrayList vom Typ Integer an und wenn du dein ListView mit den Daten aus der Datenbank füllst steckst du dort gleich die ID mit rein.

Wie wir Wissen beginnt der Index eines Arrays bei 0, das trifft auch bei der ListView zu, wenn wir die Position des geklickten Elements abrufen.
 
Zuletzt bearbeitet:
Danke, Danke, Danke!
Das war genau das, was ich gesucht habe!

Hätte man eigentlich selber drauf kommen können, aber naja.
 
Hallo,

ich habe zwei Beobachtungen gemacht, die ich hier gerne erwähnen würde.

Wenn man beim Adapter android.R.layout.simple_list_item_1 verwendet, dann ist das scrollen verbuggt (sieht nach einem refreshproblem aus/es flackert) und es ist nur der teil anklickbar, der so groß ist wie der string.

Ich habe einige Stunden damit verbracht eine Lösung für das Problem zu finden. Man muss einfach android.R.layout.simple_list_item_2 verwenden! ;)
 
Hallo,

ich habe mal ne etwas andere frage zu dem ListView.

Annahme: wir haben eine list.xml datei. Dort über den 'grafical layout' fügen wir eine Listview ein. Hinzukommen zwei Buttons die nebeneinander unter der Listview sind. Ungefähr so sollte es dann aussehen. die listView enthält 4 einträge.

was ich möchte ist, das wenn ich auf ein item klicke eine andere seite geöffnet wird. ABER: meine buttons sollen auch zu sehen sein, genau hier komme ich nicht weiter.

ich habe die methode 'onListItemClick ' benutzt bzw. musste daher die 'setcontentView()' auskommentieren. wobei genau damit ja meine View die ich im grafical layout gemacht habe, angezeigt werden soll. da bin ich etwas verwirrt. :confused2:

der code hier drunter funzt nicht, aufgrund des 'setContentView)'. wenn ich es so starte komm ich gar nicht zur der listview, da es vorher zusammenbricht. wenn ich es auskommentiere, und einen listadapter implementiere dann, bekomme ich die liste, auf die ich dann auch klicken kann mit der jeweiligen action und so aber die buttons feheln mir dann. kann man das nicht irgendwie verknüpfen?

Code:
public class Liste extends ListActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.liste);
    }
    
    
    
    public void Back(View view) {
        this.finish();
    }



    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);
        
        Intent i = new Intent(Liste.this, Game.class);
        startActivity(i);
    }
}
 

Ähnliche Themen

A
Antworten
10
Aufrufe
1.021
swa00
swa00
D
  • Data2006
3 4 5
Antworten
84
Aufrufe
3.705
jogimuc
J
A
Antworten
10
Aufrufe
1.927
swa00
swa00
Zurück
Oben Unten