2016-09-30 2 views
2

Чтобы показать список элементов, я обычно использую RecyclerView, но у меня есть требование, которое облегчает мне использование вертикального LinearLayout. Я не хочу потерять хорошее управление ресурсами RecyclerView, поэтому я ищу другое решение и надеюсь, что кто-то может мне помочь.Обсуждение возможности RecyclerViews

Я думаю о макете с некоторыми видами сверху, затем список предметов, за которыми следует еще несколько видов в нижней части. Или макет, содержащий более одного RecyclerView. Таким образом, у вас есть какие-то взгляды на вершине, список пунктов, после чего еще несколько взглядов и другой список элементов и т.д.

Мой макет может выглядеть следующим образом:

  • view1
  • View2
  • RecyclerView
  • View3
  • RecyclerView
  • View4

Обычно RecyclerView работает как прокручиваемый кадр, в котором вы можете прокручивать некоторый контент. Это означает, что если вы начнете прокрутку, весь экран застрянет в определенной позиции, и вы просто прокрутите RecyclerView до самого конца. Затем вы можете продолжить прокрутку всего экрана.

Что я хочу - это RecyclerView, который полностью раздувается, поэтому вы всегда прокручиваете весь экран, а не только RecyclerView, но не теряете управление ресурсами RecyclerView.

Кто-нибудь знает об этом решении?

+0

установка вы описали, конечно, возможно, если высоту каждого вида (в том числе и RecyclerView) очень мало. – HenriqueMS

ответ

0

В этой ситуации я использую только один RecycleView реализации моего собственная getItemViewType

1

добавить ниже код для пользовательского адаптера зрения ресайклера

@Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

     if (viewType == ITEM_TYPE_NORMAL) { 
      View normalView = LayoutInflater.from(getContext()).inflate(R.layout.my_normal_row, null); 
      return new MyNormalViewHolder(normalView); // view holder for normal items 
     } else if (viewType == ITEM_TYPE_HEADER) { 
      View headerRow = LayoutInflater.from(getContext()).inflate(R.layout.my_header_row, null); 
      return new MyHeaderViewHolder(headerRow); // view holder for header items 
     } 
    } 

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

0

Лучший ответ будет зависеть от того, какое поведение вы хотите для экрана в целом.

«Что я хочу, это полностью перерабатываемый RecyclerView, поэтому вы всегда прокручиваете весь экран, а не только RecyclerView, но не теряете управление ресурсами RecyclerView».

Это требование заставляет меня думать, что лучший вариант - это единственный RecyclerView с использованием разных типов ViewHolder, таких как @Rissmon Suresh и @betorcs.

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 



     class HeaderViewHolder extends RecyclerView.ViewHolder { 
      ... 
     } 


     class NormalViewHolder1 extends RecyclerView.ViewHolder { 
      ... 
     } 



     @Override 
     public int getItemViewType(int position) { 

      // use position to decide what kind of View you want 
      // can be fixed or you can access the data to check dinamically 

      if(position == 0) 
       return 0; 
      else 
       return 1; 
     } 


     @Override 
     public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

      switch (viewType) { 
       case 0: return new HeaderViewHolder(...); 
       case 1: return new NormalViewHolder1(...); 
       //... 
      } 
     } 
    } 

Надеется, что это помогает =)

+0

Вы смогли решить вашу проблему? дайте мне знать, если это помогло =) – HenriqueMS

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