2012-03-22 6 views

ответ

-4

Вы можете настроить onItemClick слушателя для вашего просмотра списка с помощью

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

Вопрос: «Как использовать элемент ListView программно?» а не о получении события щелчка элемента списка. – Zeba

2

Если вам это нужно для целей тестирования, то вы можете использовать Robotium (http://code.google.com/p/robotium/).

Вы также можете получить то, что хотите, позвонив по onClick методу ClickController с правильными параметрами.

+0

Но как вы используете Robotium для этого? –

+0

Попросите robotium нажать текст внутри элемента списка. –

11

Если вы хотите нажать/кран/выберите 3-й элемент списка затем.

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

Это отлично сработало для меня.

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

В тех случаях, когда MActivePosition - это позиция вашего клика!

+0

Nice работы mahn. :) –

+3

это фактически создаст новый вид, так что функция performItemClick будет работать, да, это сработает, но это будет не тот же вид, что и предполагаемый, getView в адаптере вводит в заблуждение, он фактически создает представление, а listView использует его в чтобы заполнить представления и переработать их – ndori

+0

Это не создаст представление. 'mList.performItemClick (mList.getChildAt (mActivePosition), mActivePosition, mList.getAdapter(). getItemId (mActivePosition));' – Arst

3

Присвоить тег в адаптере к каждому View и findviewByTag() это работало для меня:

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

Также см this answer.