Я недавно начал кодировать свой первый проект Android с использованием Android Studio 3.1.2 и SDK 19.
Один из моих фрагментов содержит RecyclerView с пользовательским приложением RecyclerView.Adapter.На CardView адаптер получает его ViewHolder, там может быть кнопка.Цель, если кнопка нажата, должен вызываться метод моего фрагмента, хотя это экземпляр пользовательского подкласса Fragment:
From RequestingFragment :
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() { }
Теперь один из моих RequestingFragment s содержит RecyclerView, к которому прикреплен пользовательский ErrorCompactAdapter .Внутри адаптеров ViewHolder, где я загружаю макет для отдельных CardView, есть кнопка, которая должна вызывать startRequest()
onClick из моего RequestingFragment
От ErrorCompactAdapter :
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
ErrorCompactAdapter на RequestingFragment , чтобы я мог вызвать startRequest()
для этого.
private Context context; // private RequestingFragment attacher;
public void onClick(View v) {
attacher.startRequest(/*params*/);
}
Но я очень не уверен, будет ли фрагмент, который содержит RecyclerView, получить ответ на запрос или какой-то «псевдоанонимный» фрагмент получит ответ ипросто ничего с этим не делает.Может кто-то просветить меня, если это правильный путь?Спасибо вперед.