6

Animasyonun silinmesi için sağ tarafa hızlıca kaydırın. Kart görüntüsünü doğru kaydırdığım an, saniyenin onda biri için geri dönüp gelir ve ardından yanıp sönmeye neden olur.Bir kart görüntülemesini silmek için hızlıca kaydırma, bir önceki saniyede titremeye neden oluyor.

Kodum, dokunma dokunma dinleyicisi için bu şekilde gider. Bağdaştırıcıyı da bildiren İçerik çözümleyicisini güncelliyorum. Ben noktalarını kırmak koyduğunuzda

SwipeableRecyclerViewTouchListener swipeTouchListener = 
      new SwipeableRecyclerViewTouchListener(recyclerView, 
        new SwipeableRecyclerViewTouchListener.SwipeListener() { 
         @Override 
         public boolean canSwipe(int position) { 
          return true; 
         } 

         @Override 
         public void onDismissedBySwipeRight(RecyclerView recyclerView, int[] reverseSortedPositions) { 
          for (int position : reverseSortedPositions) { 
           Post post = posts.get(position); 
           post.setIsDeleted(true); 
           getActivity().getContentResolver().update(PostsContract.PostEntry.buildUriForPost(posts.get(position).get_ID()), Utility.changePostToContentValue(post), "_id=" + post.get_ID(),null); 
           posts.remove(position); 
           adapter.notifyItemRemoved(position); 

          } 

         } 
        }); 
    recyclerView.addOnItemTouchListener(swipeTouchListener); 

Benim onLoadFinished bu

@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 

    if(data!=null && data.getCount() != posts.size()){ 
     posts.clear(); 
     while (data.moveToNext()){ 
      Post post = new Post(data); 
      posts.add(post); 
      adapter.notifyDataSetChanged(); 
     } 
    } 

} 

benziyor. Silinen kartın görünmediği yerde işleyicideDismissedSwipeByRight'da iyi çalışıyor. Ancak OnLoadFinished kırılma noktasına gelince, silinen kartın geri geldiğini görüyorum ve Arraylist yazılarının boyutu tamamen aynı olsa bile işlev yürütüldükten sonra otomatik olarak kapanıyor.

Silinen kart saniyenin onda biri için geri döndüğünden beri. Bu bir titreme neden olur. Herkes bana yanlış gittiğimi söyleyebilir mi? Ben docs görmek kadarıyla

+0

Neden "OnDismissedBySwipeRight" için bir "for döngüsü" var? –

+0

reverseSortedPositions bir dizidir. Ama sadece bir kez çalışır. Her satırın ne kadar sürdüğünü görmek için – Abhik

+0

bazı zamanlama kodu ekleyin. Benim varsayımım, bu yöntemde çok fazla iş yaptığınız. –

cevap

0

, ben örnek de çağıran görüyoruz adapter.notifyDataSetChanged(); şöyle:

SwipeableRecyclerViewTouchListener swipeTouchListener = 
      new SwipeableRecyclerViewTouchListener(recyclerView, 
        new SwipeableRecyclerViewTouchListener.SwipeListener() { 
         @Override 
         public boolean canSwipe(int position) { 
          return true; 
         } 

         @Override 
         public void onDismissedBySwipeRight(RecyclerView recyclerView, int[] reverseSortedPositions) { 
          for (int position : reverseSortedPositions) { 
           Post post = posts.get(position); 
           post.setIsDeleted(true); 
           getActivity().getContentResolver().update(PostsContract.PostEntry.buildUriForPost(posts.get(position).get_ID()), Utility.changePostToContentValue(post), "_id=" + post.get_ID(),null); 
           posts.remove(position); 
           adapter.notifyItemRemoved(position); 

          } 

          adapter.notifyDataSetChanged(); 

         } 
        }); 

sorununuza nedeni dinleyici sağa görünümü tokatlamak yapma ilgilenir olabilir Ancak, jest tamamlandıktan sonra, görüntü yeniden normal hale gelir, böylece yeniden kullanılabilir. Geridönüşüm görünümü tarafından yeniden kullanılıncaya kadar GONE görünümünü yapmaya çalışın (adaptörde görünür hale getirin).