2012-03-22 17 views

Odpowiedz

-4

Można założyć onItemClick słuchacza dla widoku listy poprzez

listView.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //here you do something 
    } 
}); 
+3

pytanie brzmi: „Jak wykorzystać element ListView programowo?” a nie o zdarzeniu "kliknij element" na liście. – Zeba

2

Jeśli jest to potrzebne do celów testowych, a następnie można użyć Robotium (http://code.google.com/p/robotium/).

Można również osiągnąć to, co chcesz, nazywając metodę onClick z z odpowiednimi parametrami.

+0

Ale w jaki sposób używasz Robotium do tego? –

+0

Poproś robotium, aby dotknął tekstu wewnątrz elementu listy. –

11

Jeśli chcesz kliknij/tap/select 3rd element listy wtedy.

listView.performItemClick(listView.getAdapter().getView(3, null, null), 3, listView.getItemIdAtPosition(3)); 

To działało idealnie dla mnie.

56
mList.performItemClick(
    mList.getAdapter().getView(mActivePosition, null, null), 
    mActivePosition, 
    mList.getAdapter().getItemId(mActivePosition)); 

Gdzie mActivePosition jest Pana stanowisko kliknięcie!

+0

Dobra robota mahn. :) –

+3

to faktycznie utworzy nowy widok, tak więc performItemClick będzie działał, tak to będzie działać, ale to nie będzie ten sam widok co zamierzony, getView w adapterze jest mylący, faktycznie tworzy widok, a listView używa go w aby wypełnić widoki i poddać je recyklingowi – ndori

+0

To nie utworzy widoku. 'mList.performItemClick (mList.getChildAt (mActivePosition), mActivePosition, mList.getAdapter(). getItemId (mActivePosition));' – Arst

3

Przypisywanie znacznika w adapterze do każdego View i findviewByTag() ten pracował dla mnie:

listView.performItemClick(listView.findViewWithTag(listView.getAdapter().getItem(selectedIndex)), selectedIndex, listView.getAdapter().getItemId(selectedIndex)); 

Patrz także this answer.

Powiązane problemy