У меня есть recyclerview
в моей деятельности.Когда пользователь щелкает элемент recyclerview
, я хочу показать свое настраиваемое диалоговое окно и отображать в нем данные об элементе recyclerview, recylerview работает нормально, но проблема в том, что когда я щелкаю элемент, приложение, к сожалению, останавливается с некоторой ошибкой
Вот мой logcat
Процесс: com.example.ajsoft.test, PID: 5290 java.lang.ArrayIndexOutOfBoundsException: length = 18;index = -1 в java.util.ArrayList.get (ArrayList.java:310) в com.example.ajsoft.test.RecyclerViewAdapter $ 1.onClick (RecyclerViewAdapter.java:50) в android.view.View.performClick (Просмотреть.Java: 4780) на android.view.View $ PerformClick.run (View.java:19866) на android.os.Handler.handleCallback (Handler.java:739) на android.os.Handler.dispatchMessage (Handler.java:95) на android.os.Looper.loop (Looper.java:135) на android.app.ActivityThread.main (ActivityThread.java:5254) на java.lang.reflect.Method.invoke (собственный метод) на java.lang.отражения698)
RecyclerViewAdapter Code
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
private Context mContext ;
private List<Book> mData ;
Dialog myDialog;
public RecyclerViewAdapter(Context mContext, List<Book> mData) {
this.mContext = mContext;
this.mData = mData;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view ;
LayoutInflater mInflater = LayoutInflater.from(mContext);
view = mInflater.inflate(R.layout.my,parent,false);
final MyViewHolder vHolder =new MyViewHolder(view);
myDialog =new Dialog(mContext);
myDialog.setContentView(R.layout.vx);
vHolder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView dialog_name=(TextView)myDialog.findViewById(R.id.name);
ImageView dialog_image=(ImageView)myDialog.findViewById(R.id.image);
dialog_name.setText(mData.get(vHolder.getAdapterPosition()).getTitle());
dialog_image.setImageResource(mData.get(vHolder.getAdapterPosition()).getThumbnail());
myDialog.show(); }
});
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.tv_book_title.setText(mData.get(position).getTitle());
holder.img_book_thumbnail.setImageResource(mData.get(position).getThumbnail());
}
@Override
public int getItemCount() {
return mData.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
TextView tv_book_title;
ImageView img_book_thumbnail;
CardView cardView ;
public MyViewHolder(View itemView) {
super(itemView);
tv_book_title = (TextView) itemView.findViewById(R.id.name) ;
img_book_thumbnail = (ImageView) itemView.findViewById(R.id.image);
cardView = (CardView) itemView.findViewById(R.id.cv);
}
}
}