RecyclerView多布局展示示例
来源:互联网 发布:php开发环境 编辑:程序博客网 时间:2024/05/20 02:24
注:所需的依赖
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
1.适配器类public class Myadapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { //定义两种不同的布局类型 private int ONE_ITEM=1; private int TWO_ITEM=2; private Context mcontext; private ArrayList<String> mlist; public Myadapter(Context mcontext, ArrayList<String> mlist) { this.mcontext = mcontext; this.mlist = mlist; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { LayoutInflater lay = LayoutInflater.from(mcontext); RecyclerView.ViewHolder holder=null; //根据不同布局类型将XML引入进来 if (ONE_ITEM==viewType){ View view = lay.inflate(R.layout.two_item, parent, false); holder=new OneViewHolder(view); }else { View view2 = lay.inflate(R.layout.one_item, parent, false); holder=new TwoViewHolder(view2); } return holder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { //根据不同的ViewHolder绑定数据if (holder instanceof OneViewHolder){ ((OneViewHolder)holder).tv3.setText(mlist.get(position));}else { ((TwoViewHolder) holder).tv1.setText(mlist.get(position)); ((TwoViewHolder) holder).tv2.setText(mlist.get(position));} } @Override public int getItemCount() { return mlist.size(); } //定义两个ViewHolder类,将不同布局的控件初始化 class OneViewHolder extends RecyclerView.ViewHolder{ TextView tv3; public OneViewHolder(View itemView) { super(itemView); tv3=(TextView)itemView.findViewById(R.id.adapter_linear_text); } } class TwoViewHolder extends RecyclerView.ViewHolder{ TextView tv1,tv2; public TwoViewHolder(View itemView) { super(itemView); tv1=(TextView)itemView.findViewById(R.id.adapter_two_1); tv2=(TextView)itemView.findViewById(R.id.adapter_two_2); } } //根据具体条件判断返回哪种类型的布局 @Override public int getItemViewType(int position) { if (position % 3==0){ return TWO_ITEM; }else { return ONE_ITEM; } }}
2.MainActivity类
public class MainActivity extends AppCompatActivity { private RecyclerView mrv; private Myadapter md; private ArrayList<String> mlist; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initdata(); initview(); } private void initdata() { mlist=new ArrayList<>(); for (int i=0;i<30;i++){ mlist.add("位置"+i);} } private void initview() { mrv=(RecyclerView)findViewById(R.id.recy); md=new Myadapter(MainActivity.this,mlist); mrv.setLayoutManager(new LinearLayoutManager(this)); mrv.setAdapter(md); }}
阅读全文
0 0
- RecyclerView多布局展示示例
- RecyclerView展示多种布局
- RecyclerView多条目展示
- RecyclerView多条目展示
- RecyclerView的多条目展示
- RecyclerView 头部添加布局 简单示例
- ListView多布局展示
- LisView多布局展示
- RecyclerView实现多布局
- RecyclerView的多布局
- 实现RecyclerView多布局
- RecyclerView多布局实现
- Android recyclerView 多布局
- RecyclerView 多布局问题
- RecyclerView 多布局使用
- RecyclerView多布局实现
- RecyclerView多布局加载
- recyclerview 多布局
- phpObject
- BAyouhua
- Vue2.0学习文档(Vue介绍)
- @Transactional在main.java和test.java下的不同
- 【CSDN下载】第二期:Xcode iOS真机镜像包、人脸探测与识别源码资源
- RecyclerView多布局展示示例
- OnValidate
- 正式版本去掉如ADB debug
- 物料主数据增强(MM01/MM02/MM03)
- LED驱动
- Eclipse快捷键
- Android自定义ViewGroup:实现简单的垂直方向线性布局(2)
- 项目中遇到的 蜜汁 VC 管理fang'an
- 《python机器学习及实践-从零开始通往kaggle竞赛之路(代码Python 3.6 版)》chapter1.1