EditДобавить щелчок слушатель Generic RecyclerView адаптер
Как Это genericAdapter не просто один, и я знаю методы для добавления клика слушателя. И это не очень хорошая практика сделать это в onCreateViewHolder
. Так вот почему мне нужно лучшее предложение
Я создал Generic адаптер для RecyclerView в
android
. Теперь мне нужно какое-то предложение улучшить его. И как я могу добавить к нему clickListener.
GenericAdapter.java
public abstract class GenericAdapter<T> extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private ArrayList<T> items;
private OnRecyclerItemClicked onRecyclerItemClicked;
public abstract RecyclerView.ViewHolder setViewHolder(ViewGroup parent);
public abstract void onBindData(RecyclerView.ViewHolder holder, T val);
public GenericAdapter(Context context, ArrayList<T> items){
this.context = context;
this.items = items;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder holder = setViewHolder(parent);
return holder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
onBindData(holder,items.get(position));
}
@Override
public int getItemCount() {
return items.size();
}
public void addItems(ArrayList<T> savedCardItemz){
items = savedCardItemz;
this.notifyDataSetChanged();
}
public T getItem(int position){
return items.get(position);
}
public void setOnRecyclerItemClicked(OnRecyclerItemClicked onRecyclerItemClicked){
this.onRecyclerItemClicked = onRecyclerItemClicked;
}
public interface OnRecyclerItemClicked{
void onItemClicked(View view,int position);
}
}
И Называйте это как
adapter = new GenericAdapter<MyModelClass>(context,listOfModelClass) {
@Override
public RecyclerView.ViewHolder setViewHolder(ViewGroup parent) {
final View view = LayoutInflater.from(context).inflate(R.layout.item_recycler_view, parent, false);
AViewHolder viewHolder = new AViewHolder(context, view);
return viewHolder;
}
@Override
public void onBindData(RecyclerView.ViewHolder holder1, MyModelClass val) {
MyModelClass currentCard = val;
AViewHolder holder = (AViewHolder)holder1;
holder.cardNumber.setText(currentCard.getDisplayNumber());
holder.cardHolderName.setText(currentCard.getCardHolderName());
}
};
mRecyclerView.setAdapter(adapter);
Теперь, как и где я мог бы добавить щелчок слушателя. Поскольку добавление кликов к onBindData является накладными расходами. Требуется предложение.
Возможный дубликат [RecyclerView onClick] (http: // stac koverflow.com/questions/24471109/recyclerview-onclick) –
Один из способов, который я видел, - это ваш класс обладателя вида, который реализует 'View.OnClickListener' –
. Соответственно: http://stackoverflow.com/questions/24471109/recyclerview-onclick – Sufian