Skip to content

Instantly share code, notes, and snippets.

@antonioxtasis
Last active September 11, 2018 20:58
Show Gist options
  • Save antonioxtasis/a1a515400f1fd31c5c97951e7c7a2974 to your computer and use it in GitHub Desktop.
Save antonioxtasis/a1a515400f1fd31c5c97951e7c7a2974 to your computer and use it in GitHub Desktop.
Android - Adapter respond to Activity using interface on constructor
public class MyActivity {
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view_categories);
setupRecyclerView();
}
private void setupRecyclerView() {
ArrayList<Message> arr = getMessages();
recyclerView.setHasFixedSize(true);
recyclerView.setAdapter(new MyAdapter(this, arr, new MyAdapter.Listener() {
@Override
public void onEventOne() {
// stuff
}
@Override
public void onEventTwo(Message msg) {
// stuff
}
}));
recyclerView.setLayoutManager(new GridLayoutManager(this, 1));
}
}
class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
private List<Message> list = new ArrayList<>();
private FragmentActivity context;
private Listener mCallback;
public interface Listener {
void onEventOne();
void onEventTwo(Message msg);
}
private MyAdapter(FragmentActivity context, List<Message> list, Listener listener){
this.list = list;
this.context = context;
this.mCallback = listener;
}
...
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
final Message item = (Message) list.get(position);
holder.itemView.setOnClickListener(v -> {
mCallback.onEventOne();
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment