У меня есть RecyclerView, элементы которого содержат кнопку, которая запускает действие с помощью startActivityForResult.Метод onClick был реализован внутри адаптера, и onActivityResult из фрагмента, содержащего RecyclerView, не был вызван по возвращении из нового действия.Как я узнал, этого следовало ожидать, поскольку startActivityForResult не был вызван из этого фрагмента.
Наиболее близким решением, которое я нашел, было следующее: onActivityResult внутри RecyclerView.Adapter не используется
Но при попытке использовать интерфейс для реализации метода onClick, я сейчас сталкиваюсь с новой проблемой: я не могу вызвать метод onClick внутри адаптера, хотя он реализован внутри действия, потому что контекст адаптераявляется статическим, а метод нестатическим.
Ниже приведены некоторые фрагменты кода для лучшего объяснения текущей ситуации.Я отчаянно нуждаюсь в альтернативном решении, я действительно искал насквозь.Спасибо.
Фрагмент реализует интерфейс:
public class EditableOffersListFragment extends Fragment implements OnClickButtonListener { ...
@Override
public void onClickButton(View v, int position, ArrayList<Offer> offers) {
Offer from_item = offers.get(position);
Intent intent = new Intent(getActivity(), OfferDetailsPopupActivity.class);
intent.putExtra("new", false);
intent.putExtra("offer_fromRecycler", from_item);
getActivity().startActivityForResult(intent, HTZ_ADD_OFFER);
}
...}
Интерфейс (в отдельном файле):
public interface OnClickButtonListener {
void onClickButton(View v, int position, ArrayList<Offer> offers);
}
А внутри адаптера:
mEditOfferButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
OnClickButtonListener.onClickButton(v, getAdapterPosition(), mOffers);
}
});