2016-07-05 3 views
0

У меня есть список recyclerview с элементами вроде этого:RecyclerView с ItemTouchHelper только часть перелистываемой

list item

Красный квадрат только мы можем украсть (перетащить и выпасть) влево, и зеленый только мы можем повернуть направо. Когда элемент наотмашь, появляется и изображение с опцией, как это:

-Проведите слева:

swipe left

-Проведите право: swipe right

Элемент макета имеют именно такой вид:

<RelativeLayout> 
    <LinearLayout> 
     <ImageView/> //Red square 
     <ImageView/> //Green square 
    </LinearLayout> 
    <LinearLayout> 
     <ImageView/> //Red square swiped action 
     <ImageView/> //Green square swiped action 
    </LinearLayout> 
</RelativeLayout> 

Я пытаюсь сделать это с помощью ItemTouchHelper.Callback и overri ding метод onChildDraw, чтобы сделать правильную анимацию. Но я не могу провести с квадратом, который будет прокручен, и сделать правильную анимацию. ¿Еще один способ добиться этого?

ответ

0

Основываясь на множестве примеров, легко создать собственный прослушиватель Callback в RecycleView. Как и в this example. Вы должны предоставить вам собственное поведение.

Пример SimpleItemTouchHelperCallback из приведенной выше ссылки.

@Override 
    public int getMovementFlags(RecyclerView recyclerView, ViewHolder viewHolder) { 
     int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN; 
     int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END; 

     //Four your Red field use flags 
     int redFlags = ItemTouchHelper.START; 

     //Four your Green field use flags 
     int greenFlags = ItemTouchHelper.END; 

     return makeMovementFlags(dragFlags, swipeFlags); 
    } 
+0

Как я могу знать, если я должен 'вернуть makeMovementFlahs (0, redFlags)' или 'вернуть makeMovementFlahs (0, greenFlags)'? как я могу знать, где начало/конец движения (красный или зеленый квадрат)? – RoberV

+0

Вам нужно просто запустить действие «Остановить действие» на нужном вам просмотре. Я думаю, вы не знаете, как этот обратный вызов работает ... Вы должны использовать этот пример, для получения дополнительной информации https://github.com/GensaGames/Sample-KenBurnsEffect-in-RecycleView – GensaGames

+0

Я видел этот пример. Я использую 'OnTouchListener', чтобы обнаружить обнаружение swipes в красном и зеленом квадрате, затем я вызываю' startDrag() ', и все работает нормально. Но я не знаю, как отключить другие перемещения swipes, потому что обратный вызов вызывается всегда или как вернуть 0,0 в методе 'getMovementFlags' – RoberV

Смежные вопросы