2016-05-19 1 views
0

У меня есть recyclerview со списком, содержащим два разных формата данных.Recyclerview с прокручиваемым заголовком (например, список приглашений facebook)

Я хотел бы реплицировать формат списка facebook, где первый вид в recyclerview является заголовком (запросы друга в фейсбуке), первый набор данных прокрутится ниже этого заголовка, а затем в качестве вторых данных (люди, которых вы знаете в случае с facebook), новый заголовок будет прокручивать и заменять этот начальный заголовок, а затем второй набор данных будет прокручиваться под этим вторым заголовком.

У меня есть настройка recyclerview как с наборами данных, так и с переключением просмотров, но есть идеи, как реализовать «динамический эффект заголовка», например, facebook?

Спасибо.

ответ

1

Вы можете достичь этого с помощью этого library. Смотрите рисунок ниже:

enter image description here

Сначала нужно создать класс Раздел:

class MySection extends StatelessSection { 

    String title; 
    List<String> list; 

    public MySection(String title, List<String> list) { 
     // call constructor with layout resources for this Section header, footer and items 
     super(R.layout.section_header, R.layout.section_item); 

     this.title = title; 
     this.list = list; 
    } 

    @Override 
    public int getContentItemsTotal() { 
     return list.size(); // number of items of this section 
    } 

    @Override 
    public RecyclerView.ViewHolder getItemViewHolder(View view) { 
     // return a custom instance of ViewHolder for the items of this section 
     return new MyItemViewHolder(view); 
    } 

    @Override 
    public void onBindItemViewHolder(RecyclerView.ViewHolder holder, int position) { 
     MyItemViewHolder itemHolder = (MyItemViewHolder) holder; 

     // bind your view here 
     itemHolder.tvItem.setText(list.get(position)); 
    } 

    @Override 
    public RecyclerView.ViewHolder getHeaderViewHolder(View view) { 
     return new SimpleHeaderViewHolder(view); 
    } 

    @Override 
    public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) { 
     MyHeaderViewHolder headerHolder = (MyHeaderViewHolder) holder; 

     // bind your header view here 
     headerHolder.tvItem.setText(title); 
    } 
} 

Тогда вы создали RecyclerView с разделами:

// Create an instance of SectionedRecyclerViewAdapter 
SectionedRecyclerViewAdapter sectionAdapter = new SectionedRecyclerViewAdapter(); 

// Create your sections with the list of data for each year 
MySection section1 = new MySection("Header 1", section1DataList); 
MySection section2 = new MySection("Header 2", section2DataList); 

// Add your Sections to the adapter 
sectionAdapter.addSection(section1); 
sectionAdapter.addSection(section2); 

// Set up your RecyclerView with the SectionedRecyclerViewAdapter 
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview); 
recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); 
recyclerView.setAdapter(sectionAdapter); 
+0

Отлично, я дам это а сейчас. – ScottishUser