Как изменить строку кода адаптера для соответствия фрагменту?

272
18 января 2018, 20:39

У меня есть CursorAdapter для RecyclerView, написанный для активности, я решил перенести список в фрагмент, но не могу понять, как нужно изменить строку кода что бы она соответствовала фрагменту?

    public MyListCursorAdapter(Context context,Cursor cursor)
{
    super(context,cursor);
    this.context = context;
    this.activity = (HistoryActivity) context;
}

это часть кода из адаптера для обычной активности, когда я пытаюсь переделать его под фрагмент студия ругается на this.activity = (HistoryActivity) context;. К сожалению я очень плохо понимаю суть контекста, я пробовал менять HistoryActivity на History_fragment, это слишком наивно и не работает)

Answer 1

Из любого места фрагмента Вы можете получить активность методом getActivity(), а вот держать ссылку на активность внутри фрагмента - плохая идея, по-моему. Потому как в какой-то момент Вы можете получить ссылку на старую, уже разрушенную активность, что может стать причиной вызова исключения.

Так что просто уберите строку:

this.activity = (HistoryActivity) context;

и в местах, где используется this.activity, вызывайте getActivity().

Answer 2

Попробуйте передать в адаптер ссылку на фрагмент.

public MyListCursorAdapter(Fragment fragment, Cursor cursor){
    super(fragment.getContext(), cursor);
    this.context = context;
    this.activity = (HistoryActivity) fragment.getActivity();
    this.fragment = fragment;
}
READ ALSO
Можно ли использовать экран в Андроид полностью?

Можно ли использовать экран в Андроид полностью?

Задача использовать экран устройства полностью, вместе со строкой где часы и всплывающие сообщенияМожно ли это сделать или по крайней мере...

258
Вопрос о реализация чата

Вопрос о реализация чата

Есть простой чат на андроиде и сервер на ЯваСоеденение между ними происходит с помощью сокета

235
Java. Печать из Excel

Java. Печать из Excel

Суть задачи в следующем: Есть 2 xls-файлаВ первом содержится выборка данных из БД, а второй предназначен для ручного ввода данных из первого...

274
Как эмулировать 30 дней в 1 момент java

Как эмулировать 30 дней в 1 момент java

Программа выполняет такие действия(действия ниже), то есть получается нужно как бы ускорить время что ли, подскажите пожалуйста как эмулировать...

298