目标是当我点击gridview中的某个项目时,它应该打开另一个活动,显示所选项目的详细信息。但是,传递给新活动的值(通过.putExtra)始终是arraylist中的最后一项,无论我点击哪个项目。这是在适配器类btw内。谢谢:))
代码可以在下面看到
@Override
public void onBindViewHolder(final listHolder newsHolder, final int position) {
currentNews = newsList.get(position);
listHolder.ivArt.setImageResource(currentNews.getArt());
newsHolder.ivArt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(viewGroup.getContext(), ViewNewsActivity.class);
intent.putExtra("list, (Parcelable) list);
viewGroup.getContext().startActivity(intent);
}
});
}
答案 0 :(得分:0)
由于OnClickListener()
方法中设置onBindViewHolder
,您会遇到这种奇怪的行为。添加setOnClickListener()
以查看onCreateViewHolder()
内部,并在适配器内创建new View.OnClickListener()
。
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.your_layout, parent, false);
view.setOnClickListener(onClickListener);
...
}
private View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
int viewPosition = recyclerView.getChildLayoutPosition(v);
...
}
};
答案 1 :(得分:0)
不要让你的onBindViewHolder上的位置最终,因为如果删除任何项目或添加项目,ViewHolder仍将具有旧位置的引用,而是考虑使用:holder.getAdapterPosition()
答案 2 :(得分:0)