Ich habe eine, ListView
wo jedes Element in der Liste eine Textansicht und zwei verschiedene Schaltflächen enthält. Etwas wie das:
ListView
--------------------
[Text]
[Button 1][Button 2]
--------------------
[Text]
[Button 1][Button 2]
--------------------
... (and so on) ...
Mit diesem Code kann ich eine OnItemClickListener
für den gesamten Artikel erstellen :
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> list, View view, int position, long id) {
Log.i(TAG, "onListItemClick: " + position);
}
}
});
Ich möchte jedoch nicht, dass das gesamte Element anklickbar ist, sondern nur die beiden Schaltflächen jedes Listenelements.
Meine Frage ist also, wie ich einen onClickListener für diese beiden Schaltflächen mit den folgenden Parametern implementiere:
int button
(Auf welche Schaltfläche des Elements wurde geklickt)int position
(Dies ist das Element in der Liste, auf das das Klicken auf die Schaltfläche erfolgt ist.)
Update: Ich habe eine Lösung gefunden, wie in meiner Antwort unten beschrieben. Jetzt kann ich über den Touchscreen auf die Schaltfläche klicken / tippen. Ich kann es jedoch nicht manuell mit dem Trackball auswählen. Es wählt immer das gesamte Listenelement aus und geht von dort direkt zum nächsten Listenelement, wobei die Schaltflächen ignoriert werden, obwohl ich .setFocusable(true)
und setClickable(true)
für die Schaltflächen in festgelegt habe getView()
.
Ich habe diesen Code auch meinem benutzerdefinierten Listenadapter hinzugefügt:
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return false;
}
Dies führt dazu, dass überhaupt kein Listenelement mehr auswählbar ist. Es hat jedoch nicht geholfen, die verschachtelten Schaltflächen auswählbar zu machen.
Hat jemand eine Idee?