gpt4 book ai didi

android - 从附加的 RecyclerView.Adapter 调用 Fragment 方法

转载 作者:行者123 更新时间:2023-12-03 15:57:03 24 4
gpt4 key购买 nike

我最近开始使用 Android Studio 3.1.2 和 SDK 19 编写我的第一个 Android 项目。
我的 fragment 之一包含一个带有自定义 RecyclerView.Adapter 的 RecyclerView。在适配器通过其 ViewHolder 获取的 CardView 上,可以有一个按钮。目标是,如果按下按钮,应该调用我的 fragment 的方法,尽管它是 fragment 的自定义子类的实例:
来自 请求 fragment :

public abstract class RequestingFragment extends Fragment implements RequestCallbacks {

public final static void startRequest(final RequestOperation, String param) {
//this is the guy i want to call
}

//these are the RequestCallbacks, they're all getting called in startRequest()
public void onSuccess(JSONObject json, String parsingkey) { }

public void onError() { }

public void onFinished() { }
现在是我的 之一请求 fragment s 包含一个 RecyclerView,在其上自定义 错误紧凑适配器 被附上。在 Adapters ViewHolder 中,我加载单个 CardViews 的布局,有一个按钮,应该调用 startRequest()来自我的 的 onClick请求 fragment
来自 错误紧凑适配器 :
public class ErrorCompactAdapter extends RecyclerView.Adapter<ErrorCompactAdapter.ErrorCompactViewHolder> {

private Context context;
private ArrayList<Error> errors;

public ErrorCompactAdapter(Context context, ArrayList<Error> errors) {
this.context = context;
this.errors = errors;
}

public void onBindViewHolder(ErrorCompactViewHolder, int position) {
//...
holder.errorTakeOverButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//here's were i'm stuck
}
});
//...
}
}
我的第一种方法是更改​​ context 的属性错误紧凑适配器 请求 fragment , 这样我就可以调用 startRequest()对此。
private Context context; // private RequestingFragment attacher;

public void onClick(View v) {
attacher.startRequest(/*params*/);
}
但我非常不确定,如果包含 RecyclerView 的 fragment 将是接收请求响应的 fragment ,或者如果某种“伪匿名” fragment 将接收响应并且然后根本不做任何事情。如果这是正确的道路,有人可以启发我吗?提前致谢。

最佳答案

在 ErrorCompactAdapter 类的构造函数中传递 Fragment。这对我来说是我想要的方式。我遇到过同样的问题。

RequestingFragment mFragment;

public ErrorCompactAdapter(Context context, ArrayList<Error> errors,
RequestingFragment fragment)
{
this.context = context;
this.errors = errors;
this.mFragment = fragment;
}

// While passing the fragment into your adapter, do it this way.

ErrorCompactAdapter errorCompactAdapter = new ErrorCompactAdapter(
context, errors, RequestingFragment.this);

holder.errorTakeOverButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// use you method of fragment here
mFragment.startRequest();
}
});

关于android - 从附加的 RecyclerView.Adapter 调用 Fragment 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52720179/

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