gpt4 book ai didi

java - 在适配器中分配接口(interface)监听器的正确位置在哪里?

转载 作者:行者123 更新时间:2023-12-01 09:58:18 25 4
gpt4 key购买 nike

有时,在 RecyclerView 适配器中,单击每行中的项目时调用函数会很有帮助,因此我定义了一个接口(interface)并分配了监听器,如下所示:

public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.RecyclerViewHolder> {
private List<SomeObject> mSomeObjectList;
private Context mContext;
private RowClickListener mListener;

public interface RowClickListener {
void someFunction(SomeObject someObject);
}

public MyRecyclerViewAdapter(Context context, List<SomeObject> objects) {
mContext = context;
mSomeObjectList = objects;
mListener = (RowClickListener) context;
}
//...

这是正确的方法吗?我注意到,当人们在 Fragment 类中分配监听器时,他们通常在 OnAttach 方法中执行此操作,而在 Adapter 的情况下,该方法似乎并不存在。这里什么地方被认为是合适的?

最佳答案

我建议在 FragmentActivity 中使用它,而不是在 Adapter 中定义它。

Interface定义单独的类或在Fragment/Activity中定义它。

public class SomeActivity extends Activity implements RowClickListener
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
.
.
.
MyRecyclerViewAdapter adapter = new MyRecyclerViewAdapter(context,list,this);
}

@Override
public void someFunction(SomeObject someObject){

}
}

public interface RowClickListener {
void someFunction(SomeObject someObject);
}

在你的适配器类中

private RowClickListener mListener;

public MyRecyclerViewAdapter(Context context, List<SomeObject> objects, RowClickListener listener) {
mContext = context;
mSomeObjectList = objects;
mListener = listener;
}

关于java - 在适配器中分配接口(interface)监听器的正确位置在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37018388/

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