Wie man ausgewählte Element aus RecyclerView Liste?
Habe ich eine Schnittstelle zur Erweiterung der Funktionalität des Recycler-Ansicht und ermöglicht zu hören, klicken Sie auf jedes Element der Liste, aber ich Schaffe es nicht zu arbeiten. Nichts passiert, wenn ich auf ein beliebiges Element. Hier ist mein code:
//METHOD FOR INITIALIZATION OF RECYCLER VIEW
public void initRecyclerView() {
//SETTING ARRAY FOR CATEGORIES
final CategoryItem categoryItem[] = { new CategoryItem("Birthday", R.drawable.birthday_image),
new CategoryItem("Anniversary", R.drawable.anniversary_image),
new CategoryItem("Anniversary", R.drawable.anniversary_image),
new CategoryItem("Anniversary", R.drawable.anniversary_image),
new CategoryItem("Anniversary", R.drawable.anniversary_image),
new CategoryItem("Anniversary", R.drawable.anniversary_image),
new CategoryItem("Anniversary", R.drawable.anniversary_image),
new CategoryItem("Anniversary", R.drawable.anniversary_image)};
//FINDING RECYCLER VIEW IN LAYOUT
recyclerView = (RecyclerView) findViewById(R.id.list);
recyclerView.setLayoutManager(new GridLayoutManager(this, 2));
adapter = new CategoriesListAdapter(categoryItem);
recyclerView.setAdapter(adapter);
//SETTING ON CLICK LISTENER ON ADAPTER
adapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void setOnItemClick(View view, int position) {
String clickedItem = String.valueOf(position);
if ( clickedItem.equals("Birthday") ) {
Toast.makeText(MainActivity.this, "Clicked on Birthday!", Toast.LENGTH_SHORT).show();
}
}
});
recyclerView.setItemAnimator(new DefaultItemAnimator());
}
UPDATE:
adapter
public class CategoriesListAdapter extends RecyclerView.Adapter<CategoriesListAdapter.ViewHolder> {
private CategoryItem[] categoryItems;
private static OnItemClickListener onItemClickListener;
public CategoriesListAdapter(CategoryItem[] categoryItems) {
this.categoryItems = categoryItems;
}
@Override
public CategoriesListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_row, parent, false);
ViewHolder viewHolder = new ViewHolder(itemLayoutView);
return viewHolder;
}
@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int position) {
viewHolder.txtViewTitle.setText(categoryItems[position].getTitle());
viewHolder.imgViewIcon.setImageResource(categoryItems[position].getImage());
}
//inner class to hold a reference to each item of RecyclerView
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView txtViewTitle;
public ImageView imgViewIcon;
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
txtViewTitle = (TextView) itemLayoutView.findViewById(R.id.title);
imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.image);
itemLayoutView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
onItemClickListener.setOnItemClick(v, getAdapterPosition());
}
}
public void setOnItemClickListener (final OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
//Return the size of your itemsData (invoked by the layout manager)
@Override
public int getItemCount() {
return categoryItems.length;
}
}
SCHNITTSTELLE:
public interface OnItemClickListener {
public void setOnItemClick(View view, int position);
}
Es sollte anzeigen, toast Nachricht, wenn Geburtstag ist ausgewählt, aber es ist nicht, dass etwas angezeigt wird. Ich bin instancing-array der Klasse und ich weiß nicht, wie zu hören angeklickte Element. Die Antworten gibt es nicht, helfen Sie mir die Lösung meines Problems.
- Mögliche Duplikate von RecyclerView onClick
Du musst angemeldet sein, um einen Kommentar abzugeben.
Derzeit prüfen Sie Ihre position gegen Zeichenfolge "Geburtstag" in OnItemClickListener Methode setOnItemClick
die nie gonna wahr sein. Versuchen Sie, einen Punkt für die position und die überprüfung seiner ersten parameter gegen "Geburtstag" oder bringen Sie Ihr Toast aus, dass die if-Anweisung, und drucken Sie einfach aus-position Anzahl für den Anfang, um zu verstehen, was Los ist in es
setOnItemClick(View view, CategoryItem item)
(von wo sollten Sie in der Lage gewesen, den Titel des Artikels und vielleicht für Testzwecke display mit Toast) und vom adapter in der onClick-Methode, die Sie genanntonItemClickListener.setOnItemClick(v, categoryItems [getAdapterPosition()]);
? Habe es werfen sich einige Sortieren oder eine Ausnahme, was passiert ist?Toast.makeText(MainActivity.this, "Clicked on: " + item.yourMethodToGetTitle(), Toast.LENGTH_SHORT).show()