ListView onClick im Rowlayout?

  • Hi,
    ich versuche gerade, bei einem Click auf ein Element eines ListView eine Methode aufzurufen. Ich dachte, das würde einfach gehen, indem ich in dem Layout, dass ich dem Adapter übergebe einfach

    Code
    android:onClick="test"

    hinzufüge, allerdings wird die Methode nicht aufgerufen. Geht diese Methode generell nicht und ich muss das über onItemClickListener lösen oder habe ich es falsch implementiert?


    lg nemesis

  • Ich weiß nicht genau was du meinst, ich poste hier mal ein wenig Code, evtl wird dann klarer, was ich meine:
    Das ist die layout Datei für die einzelnen ListView Elemente:

    Code
    <?xml version="1.0" encoding="UTF-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/row"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="saveSelect"/>



    Das die Layout Datei für die ganze Activity:


    Und die wichtigen Zeilen aus der Activity:

    Code
    ...@Override
        public void onStart() {
            super.onStart();
            
            String [] saveNames= {"test", "tst", "ts", "t"};
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.rowlayout, saveNames);
            saveList.setAdapter(adapter);
        }...
        public void saveSelect(View v) {
        }...




    </button></listview></linearlayout>

  • Hi,


    ich benutze immer einen OnItemClickListener. Strukturell baue ich immer eine eigene Klasse ListItemAdapter die von BaseAdapter erbt und eine ArrayList mit ListItems bekommt. Ein ListItem ist eine ganz einfach gehaltene Bean, die einfach nur ihre Values per getter und setter hält.
    In der onCreate der Activity, die für die ListView zuständig ist, setze ich dann den Adapter und den OnItemClickListener. Ich lasse meistens den Listener von der gleichen Activity implementieren.

    Java
    adapter = new ListItemAdapter(this, listViewItems);
    		ListView lv = (ListView) findViewById(R.id.listView);
    		lv.setOnItemClickListener(this);
    		lv.setAdapter(adapter)


    Die Instanz adapter merke ich mir als Membervariable, um in der onItemClick dann bequem das richtige ListItem auszulesen

    Java
    @Override
    	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    		ListItem item = (ListItem) adapter.getItem(position); 
    		// TODO: do something
    	}


    Schaut vielleicht im ersten Moment etwas viel Aufwand für einen lächerlichen Click aus, finds strukturell aber eigentlich recht übersichtlich und elegant.


    Gruß,
    matze

  • Hi,
    ich habs jetzt auch so gemacht, wie du es beschrieben hast und es funktioniert.


    Wie schaffe ich es, dass ich ein Element mit einem Klick aufklappen kann? Geht das mit dem ExpandableListView am Besten oder sollte man sich da was selber schreiben?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!