First_Spectr
@First_Spectr
Студент

Как обновить ссылку внутри определения вложенного класса?

Немного странная формулировка вопроса, но лучше не придумал. Есть код(упрощен, что бы увидеть главное):
@Override
protected void onCreate(){
	Callback call = new Callback((answer)->{
		MyAdapter adapter = new MyAdapter(answer);
		
		ItemTouchHelper.SimpleCallback itemTouchHelperCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
			@Override
			public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
				adapter.deleteAt(viewHolder.getAdapterPosition());				
		}
	};
	
	btn.setOnClickListener(()->{
		API.response().enqueue(call);
	});
	
	API.response().enqueue(call);
}


После onCreate всё ОК, adapter созданный в call == adapter в onSwiped, но в последующих запросах выясняется что adapter внутри ItemTouchHelper.SimpleCallback не обновляется. Может это и должно быть так, но меня это вводит в заблуждение, ведь в колбеке мы ясно даем понять что нам нужен именно new ItemTouchHelper.SimpleCallback
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
First_Spectr
@First_Spectr Автор вопроса
Студент
Проблема оказалась за пределами предоставленного кода, а именно в строке чуть ниже:
new ItemTouchHelper(itemTouchHelperCallback).attachToRecyclerView(recyclerView);

Новый itemTouchHelperCallback тупо не привязывался, если вручную не отвязать старый:
if(touchHelper != null)
    touchHelper.attachToRecyclerView(null);
touchHelper = new ItemTouchHelper(itemTouchHelperCallback);
touchHelper.attachToRecyclerView(recyclerView);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы