Created
August 24, 2017 14:09
-
-
Save gautier-levert/0baa748d80d594a46eb86b5600e6b40c to your computer and use it in GitHub Desktop.
AndroidAnnotations RecyclerViewAdapterBase
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.support.v7.widget.RecyclerView; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import java.util.ArrayList; | |
import java.util.Collection; | |
import java.util.List; | |
/** | |
* https://github.com/androidannotations/androidannotations/wiki/Adapters-and-lists#recyclerview-and-viewholder | |
*/ | |
public abstract class RecyclerViewAdapterBase<T, V extends View> extends RecyclerView.Adapter<ViewWrapper<V>> { | |
protected List<T> items = new ArrayList<>(); | |
public final void clear() { | |
final int size = items.size(); | |
items.clear(); | |
notifyItemRangeRemoved(0, size); | |
} | |
public final boolean add(T item) { | |
final boolean result = items.add(item); | |
notifyItemInserted(items.size() - 1); | |
return result; | |
} | |
public final boolean addAll(Collection<? extends T> items) { | |
final int position = this.items.size(); | |
final boolean result = this.items.addAll(items); | |
notifyItemRangeInserted(position, items.size()); | |
return result; | |
} | |
public final T getItem(int position) { | |
return items.get(position); | |
} | |
@Override | |
public final int getItemCount() { | |
return items.size(); | |
} | |
@Override | |
public final ViewWrapper<V> onCreateViewHolder(ViewGroup parent, int viewType) { | |
return new ViewWrapper<>(onCreateItemView(parent, viewType)); | |
} | |
protected abstract V onCreateItemView(ViewGroup parent, int viewType); | |
@Override | |
public final void onBindViewHolder(ViewWrapper<V> viewHolder, int position) { | |
onBindViewHolder(viewHolder.getView(), items.get(position)); | |
} | |
protected abstract void onBindViewHolder(V view, T item); | |
@Override | |
public final void onBindViewHolder(ViewWrapper<V> holder, int position, List<Object> payloads) { | |
onBindViewHolder(holder.getView(), items.get(position), payloads); | |
} | |
protected void onBindViewHolder(V view, T item, List<Object> payloads) { | |
onBindViewHolder(view, item); | |
} | |
@Override | |
public final void onViewRecycled(ViewWrapper<V> holder) { | |
onViewRecycled(holder.getView()); | |
} | |
protected void onViewRecycled(V view) { | |
} | |
@Override | |
public final boolean onFailedToRecycleView(ViewWrapper<V> holder) { | |
return onFailedToRecycleView(holder.getView()); | |
} | |
protected boolean onFailedToRecycleView(V view) { | |
return false; | |
} | |
@Override | |
public final void onViewAttachedToWindow(ViewWrapper<V> holder) { | |
onViewAttachedToWindow(holder.getView()); | |
} | |
protected void onViewAttachedToWindow(V view) { | |
} | |
@Override | |
public final void onViewDetachedFromWindow(ViewWrapper<V> holder) { | |
onViewDetachedFromWindow(holder.getView()); | |
} | |
protected void onViewDetachedFromWindow(V view) { | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.support.v7.widget.RecyclerView; | |
import android.view.View; | |
/** | |
* https://github.com/androidannotations/androidannotations/wiki/Adapters-and-lists#recyclerview-and-viewholder | |
*/ | |
public class ViewWrapper<V extends View> extends RecyclerView.ViewHolder { | |
private V view; | |
public ViewWrapper(V itemView) { | |
super(itemView); | |
view = itemView; | |
} | |
public V getView() { | |
return view; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment