Używam SwipeableRecyclerView dla mojej aplikacji Android do włączania suwaków dla mojego recyclerView. RecyclerView zawiera listę cardViews.RecyclerView.getChild (indeks) pokazuje wartość null podczas przewijania listy (indeks zostaje pomieszany)
starałem się wdrożyć funkcjonalność cofania dla kart które zostaną usunięte, gdy przesunięcie w lewo (pokazy pierwszy swipe cofnąć, obok machnięcia powoduje usunięcie)
próbuję następujący kod (częściowo działa chyba)
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);
}
}
}
});
gdy przedmioty są bardziej (potrzeby przewijania)
View view = recyclerView.getChildAt(position);
zwraca pustą referencję, która powoduje awarii aplikacji.
Wątpię, czy używam niewłaściwej metody widzenia. Powinienem używać czegoś związanego z widownią, jestem w pewnym sensie niejasny, jak uzyskać pogląd, który chcesz od widza.
Jeśli ktokolwiek może udostępnić coś, co pomaga ,, to będzie świetnie! Z przyjemnością udzielę dalszych informacji, jeśli ktoś będzie chciał,
W jaki sposób mogę uzyskać dostęp do widoków z tego widoku, Czy mogę zmienić układ i nadmuchać nowy? –
W każdym razie używam cardview, który jest najpierw ukryty, aby pokazać się, kiedy użytkownik próbuje usunąć przedmiot, W ten sposób mogę uciec od bałaganu utworzonego, gdy próbuję uzyskać dostęp do widoków bezpośrednio z recyclerView.Ten działa dobrze, będę używał tej koncepcji, dopóki nie będę w stanie robić poglądów prooperly z recyclerView –
@yigit Czy możesz rozwinąć nieco więcej? Powiedziałeś, że "powinieneś użyć ...". Czy jest to oczekiwane zachowanie lub błąd? (czemu?). Widzę RecyclerView jako widok przewijany sam, więc to trochę dziwne, jeśli mnie pytasz. – GMan