Как позвонить ItemClickListener
? listView.performItemClick()
не работает. Это возможно?Android - Как программно использовать элемент ListView?
ответ
Вы можете настроить onItemClick
слушателя для вашего просмотра списка с помощью
listView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//here you do something
}
});
Вопрос: «Как использовать элемент ListView программно?» а не о получении события щелчка элемента списка. – Zeba
Если вам это нужно для целей тестирования, то вы можете использовать Robotium (http://code.google.com/p/robotium/).
Вы также можете получить то, что хотите, позвонив по onClick
методу ClickController
с правильными параметрами.
Но как вы используете Robotium для этого? –
Попросите robotium нажать текст внутри элемента списка. –
Ответ
listView1.performItemClick (ListView1, 3, listView1.getItemIdAtPosition (3));
по ссылке
Если вы хотите нажать/кран/выберите 3-й элемент списка затем.
listView.performItemClick(listView.getAdapter().getView(3, null, null), 3, listView.getItemIdAtPosition(3));
Это отлично сработало для меня.
mList.performItemClick(
mList.getAdapter().getView(mActivePosition, null, null),
mActivePosition,
mList.getAdapter().getItemId(mActivePosition));
В тех случаях, когда MActivePosition - это позиция вашего клика!
Nice работы mahn. :) –
это фактически создаст новый вид, так что функция performItemClick будет работать, да, это сработает, но это будет не тот же вид, что и предполагаемый, getView в адаптере вводит в заблуждение, он фактически создает представление, а listView использует его в чтобы заполнить представления и переработать их – ndori
Это не создаст представление. 'mList.performItemClick (mList.getChildAt (mActivePosition), mActivePosition, mList.getAdapter(). getItemId (mActivePosition));' – Arst
Присвоить тег в адаптере к каждому View
и findviewByTag()
это работало для меня:
listView.performItemClick(listView.findViewWithTag(listView.getAdapter().getItem(selectedIndex)), selectedIndex, listView.getAdapter().getItemId(selectedIndex));
Также см this answer.
performItemClick должен работать, возможно, что-то не так с его использованием – njzk2
@cool dev посмотри на мой новый ответ – Sameer