Jak słuchać zdarzenia kliknięcia w widoku ListView?
Oto, co mam teraz
ListView list = (ListView)findViewById(R.id.ListView01);
...
list.setAdapter(adapter);
Kiedy wykonam następujące czynności
list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView parentView, View childView,
int position, long id)
{
setDetail(position);
}
public void onNothingSelected(AdapterView parentView) {
}
});
To nie wydaje się działać po kliknięciu.
Cały ten kod znajduje się w klasie rozszerzającej Activity.
android
listview
click
onitemclicklistener
teepusink
źródło
źródło
Załóżmy, że obiektem ListView jest lv, wykonaj następujące czynności:
źródło
lv
nie jest dostępny w środkuonItemClick
. Jaki jest fajny sposób na obejście tego?final ListView lv = (ListView) findViewById(R.id.your_list_view);
Object o = ((ListView)arg0).getItemAtPosition(position);
W metodzie getView () klasy adaptera należy ustawić widok zawyżony „Klikalny” i „Możliwość nasłuchiwania zdarzeń kliknięcia”.
i zadeklaruj odbiornik kliknięć w ListActivity w następujący sposób,
Dotyczy to tylko sytuacji, gdy dostosowujesz adapter przez rozszerzenie BaseAdapter.
Więcej informacji można znaleźć w ANDROID_SDK / samples / ApiDemos / src / com / example / android / apis / view / List14.java
źródło
Dwie odpowiedzi przed moją są poprawne - możesz użyć
OnItemClickListener
.Warto zauważyć, że różnica między
OnItemClickListener
iOnItemSelectedListener
, choć brzmi subtelnie, jest w rzeczywistości znacząca, ponieważ wybór przedmiotu i skupienie się są związane z trybem dotykowym twojegoAdapterView
.Domyślnie w trybie dotykowym nie ma wyboru ani ostrości. Więcej informacji na ten temat można znaleźć tutaj .
źródło
To rozwiązanie jest naprawdę minimalistyczne i nie psuje kodu.
W swoim list_item.xml (NIE listView!) Przypisz atrybut android: onClick w ten sposób:
a następnie w swoim działaniu wywołaj tę metodę:
źródło
view
może mieć jakieś metadane, może to być sposób, jak uzyskać pozycję.Musisz użyć
setOnItemClickListener
kogoś, kto powiedział.Kod powinien wyglądać następująco:
źródło
Po pierwsze, klasa musi implementować detektor kliknięć:
Następnie ustaw odbiornik na ListView
Na koniec utwórz metodę clic:
możesz spojrzeć i pobrać kod tutaj
źródło
Użyj interfejsu API setOnItemClickListener () w swoim działaniu. Poniżej znajduje się próbka.
źródło
W Kotlinie dodaj odbiornik do swojego listView tak prostego jak java
źródło