Столкнулся со странной ситуацией: есть recyclerView состоящий из cardview в котором в свою очередь текстовые поля и FloatingActionButton. Пытаюсь навесить в адаптере слушатель onClickListener на этот самый Fab. Проблема в том что он срабатывает, но не с первого раза, а раза с пятого, и то при условии если быстро кликать по ней. Проблема не в компоненте. Тоже самое пробовал и с обычной кнопкой. Вот код адаптера. Разметку думаю смысла не имеет прилагать.
public class MyEventsListAdapter extends RecyclerView.Adapter
private ArrayList
public MyEventsListAdapter(Context context, ArrayList
@Override
public MyEventsListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.my_event_list_item, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(final MyEventsListAdapter.ViewHolder viewHolder, final int position) {
final Event event = events.get(position);
viewHolder.eventTitle.setText(event.getTitle());
viewHolder.eventPlace.setText(event.getPlace());
viewHolder.eventStartDate.setText(context.getString(R.string.stars_at) + " " + event.getStartDate());
viewHolder.eventDescription.setText(event.getDescription());
viewHolder.eventCategories.setText(event.getCategories());
viewHolder.eventMembers.setText(String.valueOf(event.getMembers()));
if (event.getHashTags().length() == 0)
viewHolder.eventHashTags.setVisibility(View.GONE);
else
viewHolder.eventHashTags.setText(event.getHashTags());
viewHolder.editButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, event.getTitle(), Toast.LENGTH_SHORT).show();//Вот тут не с первого раза клик срабатывает
}
});
}
@Override
public int getItemCount() {
return events.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView eventTitle;
TextView eventPlace;
TextView eventStartDate;
TextView eventDescription;
TextView eventCategories;
TextView eventMembers;
TextView eventHashTags;
FloatingActionButton editButton;
public ViewHolder(View v) {
super(v);
eventTitle = (TextView) v.findViewById(R.id.eventTitle);
eventPlace = (TextView) v.findViewById(R.id.eventPlace);
eventStartDate = (TextView) v.findViewById(R.id.eventStartDate);
eventDescription = (TextView) v.findViewById(R.id.eventDescription);
eventCategories = (TextView) v.findViewById(R.id.eventCategories);
eventMembers = (TextView) v.findViewById(R.id.eventMembers);
eventHashTags = (TextView) v.findViewById(R.id.eventHashTags);
editButton = (FloatingActionButton) v.findViewById(R.id.editButton);
}
}
}
Разметка итема:
Ответ
Подобное поведение может быть вызвано конфлитком с другими слушателями прикосновений, присвоенными вне адаптера, напрямую для RecyclerView. Надо искать в коде RecyclerView.setOnTouchListener(...) и убирать его.
Комментариев нет:
Отправить комментарий