имитировать клик из onitemclick

У меня уже есть onitemclickListener , и он работает,

list.setOnItemClickListener( new OnItemClickListener()
{
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){
         ...
     }
});

однако мне нужно реализовать ту же функциональность с другой кнопки.

Как я могу ссылаться на onitemclickListener , который уже существует для моего списка?

Я не хочу копировать весь код и использовать его снова, так как это около 500 строк.

6
performClick() делает это, или вы можете сохранить свой OnItemClickListener в переменной и назначить его снова
добавлено автор njzk2, источник

6 ответы

Существует performItemClick , который Является ли это.

list.performItemClick(list.getChildAt(pos), pos, list.getItemIdAtPosition(pos));
17
добавлено
Примечание: ViewGroup.getChildAt() вернет null , если вид не отображается на экране. Поэтому, если вы используете ListView , а элемент, который вы пытаетесь программно выполнить, щелчок на экране выключен, getChildAt() вернет null код>. Этот null в конечном итоге будет передан в ваш обратный вызов onItemClick() , что может не иметь значения для вас, если вам не нужен этот объект View но если вы это сделаете, попробуйте перейти в list.getAdapter (). getView() .
добавлено автор Tony Chan, источник

Обновите свой код отдельным методом и вызовите этот метод из бота onItemClick и onClick .

Если вашему коду нужен выбранный элемент, передайте его в качестве аргумента из onItemClick . В вашей кнопке onClick вам придется посмотреть ListView.getCheckedItemIds , поскольку в представлении списка может быть одновременно выбран несколько элементов, и применять свою логику к элементам, которые вы хотите, на основе любых критериев.

3
добавлено
Я реализовал ваше решение, и оно почти работает. Он работает для исходного метода, но для другой кнопки я получаю ошибку Arrayindexoutofbounds при вызове этого ListItemClick (list.getCheckedItemPosition ());
добавлено автор Janpan, источник
Получил его работу, thx, пришлось использовать list.getId ()
добавлено автор Janpan, источник
Обратите внимание, что мое предположение (на основе вашей формулировки вопроса) заключается в том, что вы хотите добавить кнопку , а не другой ListView . Если это так, вы можете просто следовать за другими людьми советы по созданию явного экземпляра OnItemClickedListener и повторного использования его.
добавлено автор Franci Penov, источник
Проверьте stackoverflow. com/questions/3996938/& hellip; , это может вам помочь. Кроме того, обновление вашего вопроса с помощью некоторого нового кода позволит людям здесь лучше определить вашу проблему.
добавлено автор Franci Penov, источник

Зарегистрируйте свой onItemClickListener в макете xml и создайте общий метод в своей деятельности.

0
добавлено

create your own OnItemClickListener class, that uses the code you have already written, and use that in your calls list.setOnItemClickListener(new myOnClickListener())

0
добавлено

Я вижу два решения: либо вы можете написать общую функцию, либо вызвать эту функцию при нажатии любой кнопки. Другим решением было бы получить представление о первой кнопке, когда вы нажмете на вторую кнопку, а затем вызовите функцию performClick.

public void Click2()
{
 Button b = (Button)findViewById(R.id.button1);

 b.performClick();

}       
0
добавлено

необходимо создать объект OnItemClickListener и использовать его, когда вам нужно:

OnItemClickListener listener =  new OnItemClickListener(){
                 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
                 {
                 ...
                 }
}

и всякий раз, когда вам нужно:

list.setOnItemClickListener(listener);
0
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)