Reputation: 657
when i send some data it is give me this error java.lang.ArrayIndexOutOfBoundsException: length=15; index=-1, i dont know why . i tried to search and i didnot foung any thing related to this error.
my code
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.book_items, parent, false);
ViewHolder viewHolder = new ViewHolder(view);
viewHolder.onClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, BookContentActivity.class);
intent.putExtra("title",bookList.get(viewHolder.getAdapterPosition()).getTitle());
intent.putExtra("author",bookList.get(viewHolder.getAdapterPosition()).getAuthor());
intent.putExtra("details",bookList.get(viewHolder.getAdapterPosition()).getDetails());
intent.putExtra("imageURL",bookList.get(viewHolder.getAdapterPosition()).getImgUrl());
intent.putExtra("rating",bookList.get(viewHolder.getAdapterPosition()).getRating());
intent.putExtra("pages",bookList.get(viewHolder.getAdapterPosition()).getPages());
intent.putExtra("downloadUrl",bookList.get(viewHolder.getAdapterPosition()).getDownloadURL());
context.startActivity(intent);
}
});
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.title.setText(this.bookList.get(position).getTitle());
holder.author.setText(this.bookList.get(position).getAuthor());
Glide.with(holder.itemView.getContext())
.load(this.bookList.get(position).getImgUrl())
.transforms(new CenterCrop(),new RoundedCorners(16))
.into(holder.imageBook);
holder.bookRating.setRating(this.bookList.get(position).getRating());
holder.pages.setText(this.bookList.get(position).getPages());
}
Upvotes: 2
Views: 74
Reputation: 66
The click listener should be added where you're binding the View to the ViewHolder object (onBindViewHolder). For getting the that object and launching your next activity though, passing a custom listener interface to get the clicked object with would be better. As the adapter shouldn't be responsible for launching activities via intents.
Hopefully that helps.
Upvotes: 2