我有一个主要活动,它显示一个ImageView,在它下面显示一个RecyclerView。在RecyclerView的适配器中,我在视图持有者上实现了onClickListner,它运行良好。
但是,当单击按钮时,我需要单击以在主活动中设置图像,但无论如何,我无法在主活动中实现listner,以从适配器获得结果到主活动。我尝试使用onClick,如下所示,但这会给出一个空指针异常。
class AddVideoTitleViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView TitleScreenTitle;
ImageView TitleScreenImage;
public AddVideoTitleViewHolder(View itemView) {
super(itemView);
TitleScreenTitle = (TextView) itemView.findViewById(R.id.AddVideoTitleSingleRowTextView);
TitleScreenImage = (ImageView) itemView.findViewById(R.id.AddVideoTitleSingleRowImageView);
TitleScreenImage.setOnClickListener(this);
}
@Override
public void onClick(View v) {
final ImageView TitleImage = (ImageView) v.findViewById(R.id.TitleImageimageView);
AddTitlesInformation current = data.get(getAdapterPosition());
TitleImage.setImageResource(current.titleImageId);
}谢谢你的帮助
发布于 2016-01-11 11:03:14
我使用一个界面几乎所有我的回收视图。下面是操作步骤:
1.我创建了一个接口类:
public interface IRecyclerViewCallbacks {
public void onClick(Object object);
}2.在创建适配器时,我为IRecyclerViewCallbacks对象添加了一个参数:
public class ExampleAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private ArrayList<Model> mData;
private IRecyclerViewCallbacks mCallbacks;
public ExampleAdapter (@NotNull ArrayList<Model> data, @NotNull IRecyclerViewCallbacks callbacks) {
mData= data;
mCallbacks = callbacks;
}
}3.在适配器内部的onClick侦听器中,我调用mCallbacks.onClick(object)。在你的情况下,就像这样
@Override
public void onClick(View v) {
AddTitlesInformation current = mData.get(getAdapterPosition());
mCallbacks.onClick(current.titleImageId);
}4.最后,在创建适配器时,我传递给它一个匿名IRecyclerViewCallback对象。在你的例子中是这样的:
ExampleAdapter adapter = new ExampleAdapter(mData, new IRecyclerViewCallbacks() {
@Override
public void onClick(Object object) {
int titleImageRes = (int) object;
final ImageView TitleImage = (ImageView) v.findViewById(R.id.TitleImageimageView);
TitleImage.setImageResource(titleImageRes);
}
});发布于 2016-01-11 10:40:15
您可以使用EventBus,也可以使用接口进行此操作。
https://stackoverflow.com/questions/34719302
复制相似问题