2016-10-21 3 views
-2

Я реализую вложенный recyleview, мое представление содержит два recylerview, и оба должны прокручивать вертикально в соответствии с выполнением, но перед этим я сталкиваюсь с проблемой, когда я запускаю прокрутку дочернего recylerview, а затем начальную прокрутку родительского recylerview.Как сделать дочернюю RecylerView вертикальной прокруткой?

Что мне нужно, когда я прокручиваю дочерний режим рециркуляции, тогда переработка родительского элемента не должна прокручиваться, и когда я запускаю переработку родительского элемента для прокрутки, тогда ребенок не должен прокручиваться.

Мой родительский цикл - это белый ящик, содержащий номер 997, а затем 996 и т. Д.

My child recycle - это коробка под кнопкой повтора, которая содержит и элемент для заказа id 997 - это таурус 2518-10 chakka, taurus 3118 - 12 chakka, а ниже этого два есть еще три четыре предмета, которые мы не можем см., что можно увидеть, когда пользователь прокручивает вверх. Snapshot

Я пробовал:

нижестоящего макета:

materialRecylerAdapter = new MaterialRecylerAdapter(getActivity(), (ArrayList<OrderPogo>) myOrderArrayList,nextFragmentFlag); 
      WrappingLinearLayoutManager mLayoutManager= new WrappingLinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false); 
      recyclerView.setLayoutManager(mLayoutManager); 
      recyclerView.setItemAnimator(new DefaultItemAnimator()); 
      recyclerView.setAdapter(materialRecylerAdapter); 

OnChildLayout:

WrappingLinearLayoutManager mLayoutManager= new WrappingLinearLayoutManager(context,LinearLayoutManager.VERTICAL,false); 
     truckRV.setLayoutManager(mLayoutManager); 
     myOrderTruckAdapter = new MyOrderTruckAdapter(context,newTruckList); 
     truckRV.setItemAnimator(new DefaultItemAnimator()); 
     truckRV.setNestedScrollingEnabled(true); 
     truckRV.setAdapter(myOrderTruckAdapter); 

     truckRV.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() { 

      @Override 
      public void onTouchEvent(RecyclerView recycler, MotionEvent event) { 
       // Handle on touch events here 
       int action = event.getAction(); 
       switch (action) { 
        case MotionEvent.ACTION_DOWN: 
         // Disallow Parent RecyclerView to intercept touch events. 
         Log.e("ACTION_DOWN","ACTION_DOWN"); 
         recycler.getParent().requestDisallowInterceptTouchEvent(true); 
         break; 

        case MotionEvent.ACTION_UP: 
         // Allow Parent RecyclerView to intercept touch events. 
         Log.e("ACTION_UP","ACTION_UP"); 
         recycler.getParent().requestDisallowInterceptTouchEvent(false); 
         break; 
       } 


      } 

      @Override 
      public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { 

      } 

      @Override 
      public boolean onInterceptTouchEvent(RecyclerView recycler, MotionEvent event) { 
       return true; 
      } 

     }); 
+0

Почему вы хотите иметь RecyclerView внутри RecyclerView, и оба должны прокручиваться по вертикали? –

+0

@LalitPoptani, потому что ящик, который вы видите ниже, повторяет кнопку, содержит много элементов на нем, поэтому пользователь может прокручивать его по вертикали, чтобы увидеть содержимое, и есть еще один родительский блок, разделенный разделителем. –

ответ

0

Упование вы настраиваете ChildRecyclerView от onBindViewHolder ВЫШЕСТОЯЩИХ адаптера, если вамне устанавливать от onBindViewHolder, то, пожалуйста, установите его с onBindViewHolder.

Что-то вроде этого ..

ParentAdapter onBindViewHolder

@Override 
public void onBindViewHolder(final ViewHolder holder, int position) { 

    holder.mChildRecyclerView.setLayoutManager(new LinearLayout(context)); 
    holder.mChildRecyclerView.setAnimation(null); 

    //scroll vertically 
    holder.mChildRecyclerView.setNestedScrollingEnabled(false); 

    ChildAdapter childAdapter = new ChildAdapter(context); 

    //setter Method of ChildAdapter to set Data 
    childAdapter.setList(parentDataList.get(position).getChildList()); 

    //set childAdapter 
    holder.mChildRecyclerView.setAdapter(childAdapter); 
} 

Это, как я устанавливаю мой ChildAdapter. надеюсь работать с вами тоже.

+0

спасибо, я попробую и дам вам знать. –

+0

Уверенный ........ :) –

+0

ChildView по-прежнему остается нерассканимым –

0

Отключить вложенную прокрутку для RecyclerView.

recyclerView.setNestedScrollingEnabled(false); 
+0

, когда прокручивается дочерний элемент, тогда родительский recylerview не будет прокручиваться так, чтобы я сделал rec recerverview для детей верным, если ребенок получает прокрутку, а затем возвращает родительский реестр, я устанавливаю его как false: ecycler.getParent(). requestDisallowInterceptTouchEvent (false); –

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