2015-05-31 46 views
1

我使用this庫(swipeableRecyclerView)滑動式回收站查看監聽器通過重寫視圖尋呼機的

刷卡時CardView移動一點距離,然後將片段開始移動。

即要使用圖書館的回調作品並實施了點RecyclerView聽衆則viewPager的刷卡進入行動。

有什麼方法克服這種情況?我有兩個片段,所以我想要做這樣的事情:

右滑 - RecyclerView偵聽器被調用,CardView被解僱 左滑動 - viewPager滾動被調用並且片段被刷新。

代碼:

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

          @Override 
          public void onDismissedBySwipeLeft(RecyclerView recyclerView, int[] reverseSortedPositions) { 
           for (int position : reverseSortedPositions) { 
            messages.remove(numbers.get(position)); 
            numbers.remove(position); 
            adapter.notifyItemRemoved(position); 
           } 
           adapter.notifyDataSetChanged(); 
          } 

          @Override 
          public void onDismissedBySwipeRight(RecyclerView recyclerView, int[] reverseSortedPositions) { 
           for (int position : reverseSortedPositions) { 
            messages.remove(numbers.get(position)); 
            numbers.remove(position); 
            adapter.notifyItemRemoved(position); 
           } 
           adapter.notifyDataSetChanged(); 
          } 
         }); 

     rv.addOnItemTouchListener(swipeTouchListener); 
+0

子類'ViewPager'和覆蓋'canScroll()'。如果不出意外,你可以在提供的'View'是你'RecyclerView',在'RecyclerView'所以水平姿勢不被'ViewPager'被盜返回TRUE;。 [這裏是我的一個示例應用程序(https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2/Pager)演示此在具有的'​​ViewPager'的頁內的地圖的上下文中。 – CommonsWare

+0

它的工作,但問題逆轉。我在frags和自定義視圖中都有回收視圖,對於這兩種視圖,viewPager都返回true,即傳呼機不滾動,但卡被刷出。我可以放在這裏(用戶點擊標籤切換),但它不會是一個好設計。有什麼建議麼? – Kay

回答

1

回答我的問題。由CommonsWare共享,我創建了自定義視圖尋呼機,但面臨相反的問題(viewpager不會刷卡和卡會)。

所以我做了一些更多的調整到自定義viewPager:

public class MyViewPager extends ViewPager { 
    public MyViewPager(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    protected boolean canScroll(View v, boolean checkV, int dx, int x, 
           int y) { 
     if (v instanceof MyRecyclerView) { 
      if(dx>0) 
       return(super.canScroll(v, checkV, dx, x, y)); 
      else 
      return(true); 
     } 

     return(super.canScroll(v, checkV, dx, x, y)); 
    } 
} 

MyReceyclerView是我的自定義在一個片段中使用RecyclerView。 dx> 0確保如果即時消息從右邊的frag到左邊一個viewPager偵聽器被調用,否則卡從左到右被刪除(刪除)。

結果:ViewPager按預期運行,同時卡遭到側擊/用戶駁回。感謝CommonsWare。

相關問題