Skip to content

Instantly share code, notes, and snippets.

@pwittchen
Forked from niusounds/MyAdapter.java
Created February 16, 2016 20:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pwittchen/08f172771407e085e1a4 to your computer and use it in GitHub Desktop.
Save pwittchen/08f172771407e085e1a4 to your computer and use it in GitHub Desktop.
How to simplify RecyclerView.Adapter and RecyclerView.ViewHolder
import android.content.Context;
import org.androidannotations.annotations.EBean;
public class MyAdapter extends SimpleListAdapter<String, TextView> {
public MyAdapter(Context ctx) {
super(ctx);
}
@Override
protected TextView newView(Context ctx) {
return new TextView(ctx);
}
@Override
protected void bind(String value, TextView view) {
view.setText(value);
}
}
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import java.util.Collections;
import java.util.List;
public abstract class SimpleListAdapter<T, V extends View> extends RecyclerView.Adapter<SimpleListAdapter.ViewHolder<V>> {
private List<T> list = Collections.emptyList();
private Context ctx;
public SimpleListAdapter(Context ctx) {
super();
this.ctx = ctx;
}
protected abstract V newView(Context ctx);
protected abstract void bind(T value, V view);
@Override
public ViewHolder<V> onCreateViewHolder(ViewGroup viewGroup, int pos) {
return new ViewHolder<V>(newView(ctx));
}
@Override
public void onBindViewHolder(ViewHolder<V> viewHolder, int pos) {
bind(list.get(pos), viewHolder.view);
}
@Override
public int getItemCount() {
return list.size();
}
public void setList(List<T> list) {
this.list = list;
}
public List<T> getList() {
return list;
}
public static class ViewHolder<V extends View> extends RecyclerView.ViewHolder {
V view;
public ViewHolder(V v) {
super(v);
view = v;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment