RecyclerView
来源:互联网 发布:java枚举单例模式 编辑:程序博客网 时间:2024/05/01 11:50
第一步导RecyclerView V7的包 并修改对应的版本
public class MainActivity extends AppCompatActivity { private RecyclerView recyclerview; private LinearLayoutManager manager; private GridLayoutManager gridLayoutManager; private StaggeredGridLayoutManager staggeredGridLayoutManager; private Myadapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到控件 recyclerview = (RecyclerView) findViewById(R.id.recyclerview); //分别创建 LinearLayoutManager GridLayoutManager, // 在这里 相当于一个展示的是ListView一个是GridView manager = new LinearLayoutManager(this); //给它创建3列 gridLayoutManager = new GridLayoutManager(this, 3); // 可以通过setSpanSizeLookup 来自定义每个item占的列数 gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { return 3 - position % 3; } }); //瀑布流的形式 staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); recyclerview.setLayoutManager(manager); //添加 adapter = new Myadapter(); recyclerview.setAdapter(adapter); } //创建一个按钮来实现点击改变,要变换界面的样子 public void btn_change(View v) { //切换布局 RecyclerView.LayoutManager layoutmanager = recyclerview.getLayoutManager(); if (layoutmanager == null) { return; } //if和elseif是有先后顺序的,先判断范围小的,然后再判断范围大的, //因为GridLayoutManager 是继承 LinearLayoutManager ,所以他本质上也是LinearLayoutManager, //所以不能先判断是否是LinearLayoutManager (LinearLayoutManager范围大) if (layoutmanager instanceof GridLayoutManager) { recyclerview.setLayoutManager(manager); } else if (layoutmanager instanceof LinearLayoutManager) { recyclerview.setLayoutManager(gridLayoutManager); } }}
public class Myadapter extends RecyclerView.Adapter<Myadapter.MyViewHolder> { //创建一个Arraylist集合用来显示条目 private ArrayList<String> list; public Myadapter() { list = new ArrayList<>(); for (int i = 0; i < 30; i++) { list.add("条目" + i); } } //创建ViewHolder的每条item @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View recyclerViewItem = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_item, null); return new MyViewHolder(recyclerViewItem); } //绑定数据 @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.tv_title.setText(list.get(position)); if (position % 2 == 0) { holder.img_view.setImageResource(R.mipmap.ic_launcher); } } //得到条目数 @Override public int getItemCount() { return list.size(); } //创建一个MyViewHolder类在这里找到控件 public class MyViewHolder extends RecyclerView.ViewHolder { private final TextView tv_title; private final ImageView img_view; public MyViewHolder(View itemView) { super(itemView); //findviewById 给控件绑定id tv_title = (TextView) itemView.findViewById(R.id.tv_title); img_view = (ImageView) itemView.findViewById(R.id.img_view); } }}
阅读全文
0 0
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- 轻装上阵Html5游戏开发,JEESJS(三)
- 细说cookie,localstorage与sessionstorage的区别
- 运行spark demo时出现java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)
- Ajax异步获取数据到KindEditor的时候无法显示数据
- Webpack 入门教程
- RecyclerView
- nuc972项目随记
- pandas学习笔记
- 交换两个变量的值
- VC++/MFC中调用CHM帮助文档的方法--ShellExecute
- createQuery()和createNativeQuery()区别
- java学习9:生产和消费问题,先生产才能消费,线程间通信与等待
- Linux下更改目录及其下的子目录和文件的访问权限
- Druid 介绍及配置