Android ListView: Pobierz indeks danych widocznego elementu
Mam Androida ListView
stworzonego z SimpleAdapter
, który ma więcej elementów niż zmieści się na ekranie. Po przewinięciu listy muszę uzyskać pozycję w modelu danych pierwszego widocznego elementu na liście.
W zasadzie chcę taką funkcję jak: listView.getChildAt(0).getPositionInDataModel()
.
Adapter
ma w sobie kilka funkcji, takich jak getItemId(position)
, które wyglądały na użyteczne; jednak implementacja SimpleAdapter
po prostu zwraca przekazaną pozycję, a nie id wiersza, jak miałem nadzieję.
Rozwiązaniem brute force byłoby aby uzyskać widok o indeksie 0 i porównać go z widokiem dla każdego elementu w adapterze. Jednak nie wydaje się, aby był łatwy sposób na uzyskanie widoku dla konkretnej pozycji z adaptera.
Ktoś ma jakieś przemyślenia?3 answers
To bardzo proste. Wystarczy użyć ListView.getFirstVisiblePosition() + indexYouWant
. Na przykład, aby uzyskać pozycję w adapterze drugiego potomka wyświetlaną w ListView
, Wystarczy użyć getFirstVisiblePosition() + 1
.
No need for all the scary stuff showed in the reply above:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-31 12:57:46
listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> parent,View view, int pos, long id)
{
AisleId= parent.getSelectedItemId();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
W tym pliku otrzymamy parent ID elementu listy.getSelectedItemId ();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-19 21:35:14
Po prostu użyj getPositionForView(View)
(patrz dokumentacja ). Główną zaletą tej metody jest to, że działa ona również z potomkiem View
s elementu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-14 12:52:14