I have a recycler view that has many items that I want to use for each item for specific actions. I tried many ways, but everyone is not able to engage in activities.
This is the adapter:
public class ItemsAdapter extends RecyclerView.Adapter<ItemsAdapter.ViewHolder> { private ArrayList<String> itemsData; public ItemsAdapter(ArrayList<String> itemsData) { this.itemsData = itemsData; } @Override public ItemsAdapter.ViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) { View itemLayoutView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item, null); final ViewHolder viewHolder = new ViewHolder(itemLayoutView); itemLayoutView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String word = viewHolder.txtViewTitle.getText().toString(); Toast.makeText(parent.getContext(),word,Toast.LENGTH_LONG).show(); } }); return viewHolder; } @Override public void onBindViewHolder(ViewHolder viewHolder, int position) { viewHolder.txtViewTitle.setText(itemsData.get(position)); viewHolder.imgViewIcon.setImageResource(R.drawable.imsge_profile); } public static class ViewHolder extends RecyclerView.ViewHolder { public TextView txtViewTitle; public ImageView imgViewIcon; public ViewHolder(View itemLayoutView) { super(itemLayoutView); txtViewTitle = (TextView) itemLayoutView.findViewById(R.id.item_title); imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.item_icon); } } @Override public int getItemCount() { return itemsData.size(); }
}
This is main_activity :
public class MainActivity extends ActionBarActivity { Toolbar tBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tBar = (Toolbar) findViewById(R.id.app_bar); setSupportActionBar(tBar); getSupportActionBar().setTitle("AdroidCode Recycler View"); RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView); ArrayList<String> listItems = new ArrayList<String>(); listItems.add("Tom"); listItems.add("Hamdy"); listItems.add("John"); listItems.add("Hasna"); listItems.add("Fadi"); listItems.add("Samer"); recyclerView.setLayoutManager(new LinearLayoutManager(this)); ItemsAdapter mAdapter = new ItemsAdapter(listItems); recyclerView.setAdapter(mAdapter); recyclerView.setItemAnimator(new DefaultItemAnimator()); }
}
I tried this instead of Toast, but dosent work
@Override public void onClick(View v) { final Intent intent; switch (getPostion()){ case 0: intent = new Intent(context, FirstActivity.class); break; case 1: intent = new Intent(context, SecondActivity.class); break; ... default: intent = new Intent(context, DefaultActivity.class); break; } context.startActivity(intent); }
new adapter
public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> { public static class PersonViewHolder extends RecyclerView.ViewHolder { CardView cv; TextView personName; TextView personAge; ImageView personPhoto; public PersonViewHolder(View itemView) { super(itemView); cv = (CardView)itemView.findViewById(R.id.cv); personName = (TextView)itemView.findViewById(R.id.person_name); personAge = (TextView)itemView.findViewById(R.id.person_age); personPhoto = (ImageView)itemView.findViewById(R.id.person_photo); recyclerview.addOnItemTouchListener(new RecyclerItemClickListener( context, new RecyclerItemClickListener.OnItemClickListener() { @Override public void onItemClick(View view, int position) {
}
source share