adapter里发出去一个请求,要在上级的fragment里的handler处理。如何实现?
我现在的做法是adapter里声明handler,fragment调用adapter里的handler进行处理。但是这样做就导致了如果有多个fragment都调用同一个adapter的handler,当打开其中一个时,其他fragment也会进行同时调用。
adapter里发出去一个请求,要在上级的fragment里的handler处理。如何实现?
我现在的做法是adapter里声明handler,fragment调用adapter里的handler进行处理。但是这样做就导致了如果有多个fragment都调用同一个adapter的handler,当打开其中一个时,其他fragment也会进行同时调用。
该回答引用GPTᴼᴾᴱᴺᴬᴵ
你可以在fragment中声明一个Handler,并将其传递给Adapter,然后Adapter将请求发送到此Handler。
在Fragment中声明Handler的示例代码如下:
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// 在此处处理请求
}
};
在Adapter中,你可以通过构造函数将该Handler传递进来,然后使用它来发送请求。示例代码如下:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private Handler mHandler;
public MyAdapter(Handler handler) {
mHandler = handler;
}
// 在Adapter中发送请求
private void sendRequest() {
mHandler.sendEmptyMessage(0);
}
// ...
}
这样,当你有多个Fragment时,可以在每个Fragment中声明一个不同的Handler,并将其传递给Adapter,从而避免了其他Fragment同时调用的问题。