1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

ListView - Daten anzeigen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Sycube, 20.01.2012.

  1. Sycube, 20.01.2012 #1
    Sycube

    Sycube Threadstarter Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    20.01.2012
    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.
     
  2. storage, 21.01.2012 #2
    storage

    storage Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    20.01.2012
    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: 21.01.2012
  3. Sycube, 21.01.2012 #3
    Sycube

    Sycube Threadstarter Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    20.01.2012
    Danke, Danke, Danke!
    Das war genau das, was ich gesucht habe!

    Hätte man eigentlich selber drauf kommen können, aber naja.
     
  4. Flixius, 06.03.2012 #4
    Flixius

    Flixius Android-Hilfe.de Mitglied

    Beiträge:
    132
    Erhaltene Danke:
    4
    Registriert seit:
    24.10.2010
    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! ;)
     
  5. naruto25, 09.03.2012 #5
    naruto25

    naruto25 Android-Hilfe.de Mitglied

    Beiträge:
    46
    Erhaltene Danke:
    0
    Registriert seit:
    17.02.2012
    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);
        }
    }
    
     

Diese Seite empfehlen