我正试图在Android上实现onClick
侦听器。当我点击时,我需要从GridLayoutManager
中获得一个特定项目的详细信息。 onClick
工程但它列出阵列列表中的所有项目。 适配器类:Android onClickItem在RecyclerView上不工作
public class MoviesGridAdapter extends RecyclerView.Adapter<MoviesGridAdapter.PosterViewHolder> {
private Context context;
private List<Movies> movieItems = new ArrayList<>();
public MoviesGridAdapter(Context context, List<Movies> movieItems) {
this.context = context;
this.movieItems = movieItems;
}
@Override
public PosterViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.movies_poster_grid_view_item, parent, false);
return new PosterViewHolder(view);
}
@Override
public void onBindViewHolder(PosterViewHolder holder, int position) {
final Movies movies = movieItems.get(position);
String posterUrlPath = movies.getPosterPath();
Picasso.with(context)
.load(Constants.MOVIE_POSTER_URL + posterUrlPath).into(holder.poster);
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(context, MovieDetailsActivity.class);
intent.putExtra("Title", movies.getTitle());
intent.putExtra("Overview", movies.getOverview());
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return movieItems.size();
}
public class PosterViewHolder extends RecyclerView.ViewHolder {
ImageView poster;
final View mView;
public PosterViewHolder(View itemView) {
super(itemView);
mView = itemView;
poster = (ImageView) itemView.findViewById(R.id.movies_poster_mv);
}
}
public void setMovies(List<Movies> movies) {
movieItems.clear();
movieItems = movies;
notifyDataSetChanged();
}
}
我想,上ViewHolder
类以及其延伸RecyclerView.ViewHolder
与API中规定的getAdapterPosition()
。我得到了另一个活动/片段的意图,但我没有得到点击的项目的位置,而是让整个列表加载。这里是Github project link。 ListView
有OnItemClickListner
或ArrayAdapter
,RecyclerView
缺少功能。
非常感谢您的帮助。
我们展示完整的代码视图holder类里面的点击将工作罚款 –
更新了适配器类。 'onClick'的作品,但我没有得到的位置单个项目的细节,当我点击'GridView'中的图像 – Ronan
放最终电影电影= movieItems.get(位置);这些代码在onClickListener中的位置无可争辩地是相同的 – Bali