Я создал recyclerView -
public class PlayerListRecyclerViewAdapter extends RecyclerView.Adapter<PlayerListRecyclerViewAdapter.ViewHolder>
playerAdapter = new PlayerListRecyclerViewAdapter(this,cursor, playerDataSet);
playerRecyclerView.setAdapter(playerAdapter);
Все работает нормально, но я создал следующий метод:
public void swapCursor(Cursor newCursor) {
// Always close the previous mCursor first
if (pCursor != null) pCursor.close();
pCursor = newCursor;
if (newCursor != null) {
// Force the RecyclerView to refresh
this.notifyDataSetChanged();
}
}
Но когда я пытаюсь вызвать его из активности, связанной с адаптером, он не находит его:
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
//Do nothing, we are not moving anything
//But maybe we can let the user arrange their list?
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
long id = (long) viewHolder.itemView.getTag();
removePlayer(id);
playerAdapter.swapCursor(getAllPlayers());
}
}).attachToRecyclerView(playerRecyclerView);
}
Курсор подкачки красный, и в адаптере отображается сообщение, что он никогда не использовался.
Я пытаюсь следить:
Но я не уверен, что мне не хватает? Все остальное работает нормально, свайпаю, детали загружаются. Все хорошо, просто вызов этого метода по какой-то причине не работает.
playerAdapter следует определять как PlayerListRecyclerViewAdapter playerAdapter; В отличие от RecyclerView.Adapter playerAdapter;.
@ADM спасибо, это исправлено. Не могли бы вы опубликовать его как ответ, чтобы я мог отметить его правильным
Здесь он работает нормально, когда я пробовал ваш код swapCursor .. Можете ли вы отправить полный код активности, в которой вы его используете, а также адаптер? ..




пожалуйста, убедитесь, что ваш адаптер плеера получает нулевое значение.
потому что доступ к методу swapCursor после определения объекта playeradapter.
if (playerAdapter!=null){
playerAdapter.swapCursor(getAllPlayers());
}
Проверьте свой код для объявления playerAdapter.
Это должно быть так: -
PlayerListRecyclerViewAdapter playerAdapter;
Вместо
RecyclerView.Adapter playerAdapter;
Вы должны опубликовать полный код адаптера и класса активности. Таким образом, можно указать правильный способ вызова метода.