我正試圖在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