gpt4 book ai didi

java - RecyclerView 适配器自定义监听器接口(interface)

转载 作者:行者123 更新时间:2023-11-30 10:31:14 24 4
gpt4 key购买 nike

我有一个带有自定义监听器的 RecyclerView,我想在我的主要 Activity 中实现它,以便在单击 RecyclerView 项目时收到通知。

但是,我不确定将 setMyAdapterListener 放在适配器中的什么位置。我应该把它放在哪里?

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;

private List<Data> data;

private MyAdapterListener myAdapterListener;

public MyAdapter(Context context, List<Object> data) {
this.context = context;
this.data = data;
}

public interface MyAdapterListener {
void onContainerClick();
}

public void setMyAdapterListener(MyAdapterListener myAdapterListener) {
this.myAdapterListener = myAdapterListener;
}

public class ViewHolderItem extends RecyclerView.ViewHolder implements View.OnClickListener {
public LinearLayout container;

public ImageView poster;

public ViewHolderItem(View v) {
super(v);

container = (LinearLayout) v.findViewById(R.id.container);

poster = (ImageView) v.findViewById(R.id.poster);
}

@Override
public void onClick(View v) {
int id = v.getId();

if (id == R.id.container) {
if (myAdapterListener != null) {
myAdapterListener.onContainerClick();
}
}
}
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder viewHolder = null;
LayoutInflater inflater = LayoutInflater.from(parent.getContext());

View v2 = inflater.inflate(R.layout.item_layout, parent, false);
viewHolder = new ViewHolderItem(v2);

return viewHolder;
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
Data item = (Data) data.get(position);

holder.poster.setImageDrawable(someDrawable);
}

@Override
public int getItemCount() {
return data.size();
}

}

最佳答案

删除 setMyAdapter() 只需传递您当前在 setMyAdapterListener 中的参数作为您的 recyclerview 适配器构造函数的一部分,见下文:

public MyAdapter(Context context, List<Object> data, MyAdapterListener myAdapterListener) {
this.context = context;
this.data = data;
this.myAdapterListener = myAdapterListener;
}

//在您的 Activity 中,您必须实现接口(interface)的方法。

关于java - RecyclerView 适配器自定义监听器接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43300442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com