Android - Как программно коснуться элемента ListView

Как вызвать ItemClickListener программно? listView.performItemClick() не работает. Это возможно?


person cool dev    schedule 22.03.2012    source источник
comment
PerformItemClick должен работать, возможно, что-то не так с тем, как вы его используете.   -  person njzk2    schedule 22.03.2012
comment
@cool dev взгляните на мой новый ответ   -  person Tofeeq Ahmad    schedule 15.11.2012


Ответы (6)


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

Где mActivePosition — ваша позиция клика!

person Arun Jose    schedule 29.04.2013
comment
это на самом деле создаст новое представление, так что PerformItemClick будет работать, да, это будет работать, но это не будет то же представление, что и предполагалось, getView в адаптере вводит в заблуждение, он фактически создает представление, и listView использует его для заполнения представления и перерабатывать их - person ndori; 23.03.2015
comment
Это не создаст представления. mList.performItemClick(mList.getChildAt(mActivePosition), mActivePosition, mList.getAdapter().getItemId(mActivePosition)); - person Arst; 05.03.2018
comment
@Arst, большое спасибо за идеальное решение. - person Anirban; 01.04.2021

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

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

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

person Swapnil Godambe    schedule 18.04.2013

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

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

Также см. этот ответ.

person user1702512    schedule 13.08.2013

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

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

person Community    schedule 22.03.2012
comment
Но как вы используете Robotium для этого? - person Dave Cameron; 28.09.2012
comment
Попросите robotium коснуться текста внутри элемента списка. - person ; 15.11.2012

Ответ

listView1.performItemClick(listView1, 3, listView1.getItemIdAtPosition(3));

по ссылке

http://mantascode.com/?p=486

person Abu Saad Papa    schedule 11.12.2012

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

listView.setOnClickListener(new OnClickListener() {
    @Override
    public void   onClick(View v) {
        //here you do something
    }
});
person Artemis    schedule 22.03.2012
comment
Вопрос в том, как программно коснуться элемента ListView? а не о получении события щелчка элемента списка. - person Zeba; 24.02.2014