Created
December 23, 2017 11:27
-
-
Save pankaj89/92b73a2c11be5d31cba6f5a6b419895e to your computer and use it in GitHub Desktop.
SimpleAdapter with DataBinding
This file contains 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
public abstract class SimpleAdapter<T> extends RecyclerView.Adapter<RecyclerView.ViewHolder> { | |
ArrayList<T> list; | |
int layout; | |
public static <M, B> SimpleAdapter with(int res, ArrayList<M> list, final Binder<M, B> binder) { | |
return new SimpleAdapter<M>(list, res) { | |
@Override | |
public void onBind(int position, M model, ViewDataBinding binding) { | |
binder.onBind(position, model, (B) binding); | |
} | |
}; | |
} | |
public interface Binder<M, B> { | |
void onBind(int position, M model, B binding); | |
} | |
public SimpleAdapter(ArrayList<T> list, int layout) { | |
this.list = list; | |
this.layout = layout; | |
} | |
@Override | |
public SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { | |
SimpleViewHolder simpleViewHolder = new SimpleViewHolder(parent, layout); | |
return simpleViewHolder; | |
} | |
@Override | |
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { | |
onBind(holder.getAdapterPosition(), list.get(position), ((SimpleAdapter.SimpleViewHolder)holder).binding); | |
} | |
public abstract void onBind(int position, T model, ViewDataBinding binding); | |
@Override | |
public int getItemCount() { | |
return list.size(); | |
} | |
class SimpleViewHolder extends RecyclerView.ViewHolder { | |
public ViewDataBinding binding; | |
public SimpleViewHolder(ViewGroup parent, int res) { | |
super(LayoutInflater.from(parent.getContext()).inflate(res, parent, false)); | |
binding = DataBindingUtil.bind(itemView); | |
} | |
} | |
@BindingAdapter("simpleAdapter") | |
public static void setAdapter(RecyclerView recyclerView, SimpleAdapter simpleAdapter) { | |
recyclerView.setAdapter(simpleAdapter); | |
} | |
} |
This file contains 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
RecyclerView recyclerView = new RecyclerView(this); | |
recyclerView.setLayoutManager(new LinearLayoutManager(this)); | |
recyclerView.setAdapter(SimpleAdapter.with(R.layout.items, list, new SimpleAdapter.Binder<String, ItemsBinding>() { | |
@Override | |
public void onBind(int position, String model, ItemsBinding binding) { | |
binding.txtFirstName.setText(model); | |
} | |
})); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment