Пока я смотрел несколько уроков о просмотре recycler. Некоторые из них использовали конструктор viewHolder для подключения слушателя onClick, в то время как некоторые из них использовали метод onBindViewHolder. какой метод является лучшим местом для присоединения onclicklistener. я действительно смущенЛучшее место для прикрепления onClickListener в recyclerview
3
A
ответ
6
Метод onBindViewHolder
вызывается каждый раз, когда вы связываете свое представление с данными. Таким образом, нет лучшего места для установки функции прослушивания кликов. Вам не нужно устанавливать OnClickListener
много раз за один View
. Поэтому лучшим решением является установка функции прослушивания в onCreateViewHolder
. Но важно то, как вы реализуете функцию прослушивания кликов. Если вы, например, хотите получить некоторую модель из списка, вы можете использовать метод getPosition()
от ViewHolder
.
Посмотрите на exmaple
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
final View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.view_magazine_list_item, null);
final ViewHolder result = new ViewHolder(view);
view.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
YourObject yourobject = yourObjectsList.get(result.getAdapterPosition()));
}
});
return result;
}
1
В ViewHolder
это лучшее место:
public static class ItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
//views declare here
public ItemViewHolder(View convertView)
{
super(convertView);
... ...
convertView.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
//do something to view here
//also you can get view position by 'getPosition()' here
}
}
Смежные вопросы
- 1. RecyclerView onClickListener
- 2. Несколько onClickListener в RecyclerView
- 3. Установите onclicklistener в recyclerview
- 4. onClickListener в адаптере RecyclerView?
- 5. Лучшее место для размещения XSD
- 6. Лучшее место для размещения констант
- 7. Лучшее место для инициализации MobileServicesClient
- 8. Лучшее место для использования MySqlHelper.EscapeString
- 9. Лучшее место для реализации ko.applyBindings
- 10. Лучшее место для размещения onSharedPreferenceChangeListener
- 11. Где лучшее место для ... [iPhone]
- 12. Лучшее место для документации NHibernate?
- 13. Лучшее место для обучения SSIS
- 14. Лучшее место для Rails ParameterMissing
- 15. RecyclerView onBindViewHolder поведение onclicklistener
- 16. RecyclerView onClickListener и ViewType
- 17. Определение onCLickListener RecyclerView в действии
- 18. Recyclerview onclicklistener не работает
- 19. RecyclerView onClickListener не работает
- 20. Лучшее место для хранения массива в Laravel
- 21. Лучшее место для установки инициализации в SailsJS
- 22. Лучшее место для добавления аналитики в ApostropheCMS
- 23. Лучшее место для log.conf в пакете python
- 24. Лучшее место для создания ViewModel в MVVM
- 25. Лучшее место для других php.class в symfony2?
- 26. Лучшее место для регистрации событий в ASP.Net
- 27. Лучшее место для объявления переменных в функции
- 28. Лучшее место для сохранения изображений в устройстве
- 29. Лучшее место для загрузки файлов для скачивания
- 30. RecyclerView: One OnClickListener для разных предметов?
'GetPosition()' в настоящее время не рекомендуется. –
@BaselShishani Спасибо –