Я использую SwipeableRecyclerView для своего приложения для Android, чтобы включить перелистывание для моего recyclerView. RecyclerView содержит список карточек.
Я пытался реализовать функцию отмены для карточек, которые будут удаляться при свайпе влево (первое смахивание показывает отмену, следующее смахивание запускает удаление)
Я пытаюсь использовать следующий код (частично работает, я думаю)
SwipeableRecyclerViewTouchListener srvTouchListner = new SwipeableRecyclerViewTouchListener(rvTimerList,
new SwipeableRecyclerViewTouchListener.SwipeListener(){
@Override
public boolean canSwipe(int i) {
return true;
}
@Override
public void onDismissedBySwipeLeft(RecyclerView recyclerView, int[] ints) {
for(int position : ints){
View view = recyclerView.getChildAt(position);
if (view.getTag(R.string.card_undo) == null) {
if(viewStack == null) {
saveToViewStack(position, view);
final ViewGroup viewGroup = (ViewGroup) view.findViewById(R.id.time_card2);
view.setTag(R.string.card_undo, "true");
viewGroup.addView(view.inflate(TimerSummary.this, R.layout.timeslot_card_undo, null));
}
} else {
Log.d(TAG, "Removing Item");
deleteTimeSlot(timerInstanceList.get(position));
Toast.makeText(TimerSummary.this, "Deleted!", Toast.LENGTH_SHORT).show();
timerInstanceList.remove(position);
finalSummaryAdapter.notifyItemRemoved(position);
}
}
finalSummaryAdapter.notifyDataSetChanged();
}
@Override
public void onDismissedBySwipeRight(RecyclerView recyclerView, int[] ints) {
for (int position:ints){
View view = recyclerView.getChildAt(position);
if(view.getTag(R.string.card_undo) != null && view.getTag(R.string.card_undo).equals("true")){
viewStack = null;
recyclerView.setAdapter(finalSummaryAdapter);
}
}
}
});
когда Предметов больше (требуется прокрутка)
View view = recyclerView.getChildAt(position);
возвращает нулевую ссылку, которая вызывает сбой приложения.
Я сомневаюсь, что использую неправильный метод для просмотра. Я должен использовать что-то, связанное с просмотрщиком, я на самом деле немного запутался в том, как получить вид, который вы хотите от зрителя.
Если кто-нибудь может поделиться чем-нибудь, что поможет, это будет здорово! Я буду рад предоставить любую дополнительную информацию, если кто-то захочет,