I have a recyclerview (with an adapter) in my mainactivity which displays different categories, I want to click on each of these categories and navigate to a fragment from there. How do I do this? What is the best approach?
Here is the mainActivity
public class MainActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.word_info_layout);
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
getSupportActionBar().setTitle("");
myToolbar.setTitle(Html.fromHtml("<font color='#272d85'> </font>"));
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
mAdapter = new MyAdapter();
mRecyclerView.setAdapter(mAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.menu, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
final SearchView searchView = (SearchView)
MenuItemCompat.getActionView(searchItem);
searchItem.expandActionView();
searchView.requestFocus();
searchView.setQueryHint("Sök efter ord");
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
searchView.clearFocus();
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
}
My adapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
private Context context;
private int[] cardimages = {
R.drawable.stockholm,
R.drawable.invandrar,
R.drawable.goteborg,
R.drawable.norrland,
R.drawable.svengelska,
R.drawable.skanska,
R.drawable.ovrigt
};
private String[] titles = {
"Stockholmsslang",
"Invandrarslang",
"Skane",
"Norrland",
"Svengelska",
"Skåne",
"Övrigt",
};
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView itemImage;
public ViewHolder(View itemView) {
super(itemView);
itemImage = (ImageView) itemView.findViewById(R.id.item_image);
itemImage.setScaleType(ImageView.ScaleType.CENTER_CROP);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final int position = getAdapterPosition();
//ONclick for the recyclerview
}
});
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view;
view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.recylerview_main, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
Context context = viewHolder.itemView.getContext();
Picasso.with(context).load(cardimages[i]).fit().centerInside().into(((MyAdapter.ViewHolder) viewHolder).itemImage);
}
@Override
public int getItemCount() {
return titles.length;
}
}