bearbeitenKlick Zuhörer Generic RecyclerView Adapter
hinzufügen, da es eine genericAdapter nicht einfach ist und ich kenne die Methoden klicken Zuhörer hinzuzufügen. Und es ist keine gute Praxis, dies in onCreateViewHolder
zu tun. Also das ist, warum ich einen besseren Vorschlag brauchen
ich einen Generisches Adapter für RecyclerView in
android
geschaffen haben. Jetzt möchte ich einen Vorschlag, um es zu verbessern. Und wie könnte ich clickListener hinzufügen?
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);
}
}
Und es Rufen wie
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);
Nun, wie und wo könnte ich einen Klick Zuhörer hinzufügen. Das Hinzufügen eines Klick-Listeners zu onBindData ist ein Overhead. Brauche einen Vorschlag.
Mögliches Duplikat von [RecyclerView onClick] (http: // stac koverflow.com/questions/24471109/recyclerview-onclick) –
Eine Möglichkeit, die ich gesehen habe, ist Ihre Ansicht Inhaber Klasse implementiert 'View.OnClickListener' –
Related: http://StackOverflow.com/Questions/24471109/Recyclerview-onClick – Sufian