欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android RecyclerView加载两种布局的方法

程序员文章站 2024-02-12 22:12:28
当recyclerview有下拉刷新时,有时候设计图上,体现出来的列表有头部布局,这可以通过adapter实现加载多套布局就可以,这里以加载两种布局为例说明。 先看看ad...

当recyclerview有下拉刷新时,有时候设计图上,体现出来的列表有头部布局,这可以通过adapter实现加载多套布局就可以,这里以加载两种布局为例说明。

先看看adapter的代码:

import android.annotation.suppresslint;
import android.content.context;
import android.support.v7.widget.recyclerview;
import android.view.layoutinflater;
import android.view.view;
import android.view.viewgroup;
import android.widget.baseadapter;

import com.alvin.r;

import java.util.arraylist;
import java.util.list;

public class mainlistadapter extends recyclerview.adapter<recyclerview.viewholder>{
 private list<data> list;
 private arraylist<itementity> jdlist;
 private context context;

 public mainlistadapter(list<data> list,arraylist<itementity> jdlist, context context) {
  this.list = list;
  this.jdlist = jdlist;
  this.context = context;
 }
 @override
 public int getitemviewtype(int position) {
  return list.get(position).getshowtype();
 }
 @override
 public recyclerview.viewholder oncreateviewholder(viewgroup parent, int viewtype) {
  if(viewtype==1){
   view view = layoutinflater.from(parent.getcontext()).inflate(r.layout.layout_header_main_list,parent,false);
   return new headerholder(view);
  }else{
   view view = layoutinflater.from(parent.getcontext()).inflate(r.layout.item_list_main,parent,false);
   return new viewholderitem(view);
  }
 }

 @override
 public void onbindviewholder(recyclerview.viewholder holder, int position) {

  if(holder instanceof headerholder){
   final headerholder headerholder = (headerholder) holder;
   //todo 实现相关逻辑
  }else if(holder instanceof viewholderitem){

  }
 }

 @override
 public int getitemcount() {
  return list.size();
 }

 private class headerholder extends recyclerview.viewholder{

  headerholder(view itemview) {
   super(itemview);
  }
 }

 private class viewholderitem extends recyclerview.viewholder{

  viewholderitem(view itemview) {
   super(itemview);
  }
 }


}

getitemviewtype()这个返回的是列表当前布局类型,在adapter加载布局时,对齐进行判断,也就是onbindviewholder()方法中进行相应的判断逻辑实现。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。