在另一个 class 中获取 recyclerview 侦听器
Get recyclerview listener in another class
我有一个主 activity,它显示一个 ImageView
,下面是一个 RecyclerView
。在 RecyclerView
的适配器中,我在视图持有者上实现了 onClickListner
,它工作正常。
但是我需要在单击按钮时在主 activity 中设置图像,但无论如何我都看不到在主 activity 中实现监听器以从主适配器 activity。我尝试使用 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);
}
感谢帮助
您可以使用 EventBus 或使用接口来执行此操作
我几乎所有的回收站视图都使用一个界面。方法如下:
1.I 创建接口 class:
public interface IRecyclerViewCallbacks {
public void onClick(Object object);
}
2.When 我创建了我的适配器 我为 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.In 我调用的适配器内的 onClick 侦听器 mCallbacks.onClick(object)。在你的情况下是这样的
@Override
public void onClick(View v) {
AddTitlesInformation current = mData.get(getAdapterPosition());
mCallbacks.onClick(current.titleImageId);
}
4.Finally,当我创建适配器时,我将一个匿名 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);
}
});
我有一个主 activity,它显示一个 ImageView
,下面是一个 RecyclerView
。在 RecyclerView
的适配器中,我在视图持有者上实现了 onClickListner
,它工作正常。
但是我需要在单击按钮时在主 activity 中设置图像,但无论如何我都看不到在主 activity 中实现监听器以从主适配器 activity。我尝试使用 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);
}
感谢帮助
您可以使用 EventBus 或使用接口来执行此操作
我几乎所有的回收站视图都使用一个界面。方法如下:
1.I 创建接口 class:
public interface IRecyclerViewCallbacks {
public void onClick(Object object);
}
2.When 我创建了我的适配器 我为 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.In 我调用的适配器内的 onClick 侦听器 mCallbacks.onClick(object)。在你的情况下是这样的
@Override
public void onClick(View v) {
AddTitlesInformation current = mData.get(getAdapterPosition());
mCallbacks.onClick(current.titleImageId);
}
4.Finally,当我创建适配器时,我将一个匿名 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);
}
});