Il RecyclerView
incasinato se build con Marshmallow (Android 23)
.Marshmallow (23) + RecyclerView (23.1.0) scorrimento rovina il contenuto sopra dopo l'elemento rimosso (notifyItemRemoved)
Io utilizzo RecyclerView
pieno di un elenco di elementi e quando il tasto destro viene rimosso l'elemento. Rimuovere l'oggetto funziona correttamente. Ma dopo aver rimosso un elemento, lo scorrimento su RecyclerView
crea uno spazio vuoto sull'elemento sopra quello rimosso.
sto usando il progetto di esempio qui https://github.com/chrisbanes/cheesesquare con l'ultima versione di Android (Marshmallow)
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.support.android.designlibdemo"
minSdkVersion 9
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
}
E aggiungere il colpo di licenziare il codice
private void setItemDismiss(final RecyclerView recyclerView) {
ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(ItemTouchHelper.RIGHT, ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
((SimpleStringRecyclerViewAdapter)recyclerView.getAdapter()).removeItemAt(position);
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
}
L'adattatore ha il metodo per rimuovere removeItemAt
voce
public void removeItemAt(int position) {
mValues.remove(position);
notifyItemRemoved(position);
}
Tutto wor ks bene se compileSdkVersion 22
e targetSdkVersion 22
con com.android.support:recyclerview-v7:22.2.0
Controllare questo: https://www.youtube.com/watch?v=AbiFzDzFwjo&feature=youtu.be
fatemi sapere se qualcuno ha avuto questo problema.
Puoi includere l'invito a 'removeItemAt()'? Chiama [notifyItemRemoved()] (https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#notifyItemRemoved (int))? – ianhanniballake
Sto incontrando anche questo problema ... Sono contento che non sono solo io. Pensavo stavo impazzendo. –
Glat per sapere che verrà risolto presto. Per ora, se cambi "DefaultItemAnimator" con la tua classe dummy estendendo "RecyclerView.ItemAnimator" il problema scompare, non ottieni comunque animazioni. mRecyclerView.setItemAnimator() – feresr