V-layout自我学习总结(自我记录)

来源:互联网 发布:c语言外部变量 编辑:程序博客网 时间:2024/05/04 13:24
Adapter:public class Myadapter extends DelegateAdapter.Adapter<Myadapter.ViewHolder>函数重载中比RecycleView中多了@Override public LayoutHelper onCreateLayoutHelper() { return helper; } 构造函数方面 public Myadapter(Context context,LayoutHelper layoutHelper,int count,List<Test> testList) { this.context = context; this.helper = layoutHelper; this.count = count; this.testList = testList; } context的作用是在函数onCreateViewHolder中不用通过parent.getContext()得到context; public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item,parent,false); return new ViewHolder(view); } 函数 getItemCount中所返回是count(并非RecycleView中返回list.Size(),因为每一个Adapter是对应列表中的一段列表)public int getItemCount() { return count; } ViewHolder依然继承RecycleView.ViewHolderMainActivity方面首先是成员变量: Myadapter Adapter_LinerLayout,Adapter_GridLayout; RecyclerView recyclerView; List<Test> testList = new ArrayList<>(); List<DelegateAdapter.Adapter> myadapterList = new ArrayList<>();其主要流程为: recyclerView = findViewById(R.id.recycView_main); VirtualLayoutManager manager = new VirtualLayoutManager(this); recyclerView.setLayoutManager(manager);。。。。。。 DelegateAdapter delegateAdapter = new DelegateAdapter(manager); delegateAdapter.setAdapters(myadapterList); recyclerView.setAdapter(delegateAdapter); 一个列表中加载不同布局主要是通过 myadapterList 实现的代码如下:`package com.example.chang.test_vlayout_self;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.ImageView;import android.widget.TextView;import com.alibaba.android.vlayout.DelegateAdapter;import com.alibaba.android.vlayout.LayoutHelper;import java.util.ArrayList;import java.util.List;/** * Created by Chang on 2017/11/17. */public class Myadapter extends DelegateAdapter.Adapter<Myadapter.ViewHolder> { private Context context; private LayoutHelper helper; int count = 0; private List<Test> testList = new ArrayList<>(); public Myadapter(Context context,LayoutHelper layoutHelper,int count,List<Test> testList) { this.context = context; this.helper = layoutHelper; this.count = count; this.testList = testList; } @Override public LayoutHelper onCreateLayoutHelper() { return helper; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item,parent,false); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { Test test = testList.get(position); holder.textView.setText(test.getText()); holder.imageView.setImageResource(test.getPicId()); } @Override public int getItemCount() { return count; } class ViewHolder extends RecyclerView.ViewHolder{ ImageView imageView; TextView textView; public ViewHolder(View itemView) { super(itemView); imageView = itemView.findViewById(R.id.imageView_item); textView = itemView.findViewById(R.id.textView_item); } }}````package com.example.chang.test_vlayout_self;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.widget.GridLayout;import android.widget.LinearLayout;import com.alibaba.android.vlayout.DelegateAdapter;import com.alibaba.android.vlayout.VirtualLayoutManager;import com.alibaba.android.vlayout.layout.GridLayoutHelper;import com.alibaba.android.vlayout.layout.LinearLayoutHelper;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { Myadapter Adapter_LinerLayout,Adapter_GridLayout; RecyclerView recyclerView; List<Test> testList = new ArrayList<>(); List<DelegateAdapter.Adapter> myadapterList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = findViewById(R.id.recycView_main); VirtualLayoutManager manager = new VirtualLayoutManager(this); recyclerView.setLayoutManager(manager); initList(); LinearLayoutHelper linearLayoutHelper = new LinearLayoutHelper(); linearLayoutHelper.setItemCount(3); linearLayoutHelper.setAspectRatio(6); Adapter_LinerLayout = new Myadapter(MainActivity.this,linearLayoutHelper,4,testList); myadapterList.add(Adapter_LinerLayout); GridLayoutHelper gridLayoutHelper = new GridLayoutHelper(4); gridLayoutHelper.setItemCount(8); gridLayoutHelper.setAspectRatio(6); gridLayoutHelper.setMargin(20,20,20,20); gridLayoutHelper.setPadding(20,20,20,20); Adapter_GridLayout = new Myadapter(MainActivity.this,gridLayoutHelper,8,testList); myadapterList.add(Adapter_GridLayout); DelegateAdapter delegateAdapter = new DelegateAdapter(manager); delegateAdapter.setAdapters(myadapterList); recyclerView.setAdapter(delegateAdapter); } private void initList() { for(int i = 0;i<20;i++){ Test test = new Test(); test.setPicId(R.drawable.pic_test); test.setText("huang"); testList.add(test); } }}```
原创粉丝点击