zoukankan      html  css  js  c++  java
  • Android开发学习之RecyclerView

    1、在app/build.gradle中添加RecyclerView依赖

    1 implementation 'com.android.support:recyclerview-v7:28.0.0'

    注意依赖版本号

    2、布局文件activity_main.xml引入RecycleView

    1 <android.support.v7.widget.RecyclerView
    2         android:id="@+id/recycler_view"
    3         android:layout_width="match_parent"
    4         android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>

    3、泛型类型Fruit.java

     1 package com.example.lalala.recyclerviewdemo;
     2 
     3 public class Fruit {
     4     private String name;
     5     private int imageId;
     6     public Fruit(String name,int imageId){
     7         this.name = name;
     8         this.imageId = imageId;
     9     }
    10 
    11     public String getName() {
    12         return name;
    13     }
    14 
    15     public int getImageId() {
    16         return imageId;
    17     }
    18 }

    4、布局fruit_item.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:orientation="horizontal" android:layout_width="match_parent"
     4     android:layout_height="wrap_content">
     5     <ImageView
     6         android:id="@+id/fruit_image"
     7         android:layout_width="wrap_content"
     8         android:layout_height="wrap_content" />
     9     <TextView
    10         android:id="@+id/fruit_name"
    11         android:layout_width="wrap_content"
    12         android:layout_height="wrap_content"
    13         android:layout_gravity="center_vertical"
    14         android:layout_marginLeft="10dp"
    15         />
    16 </LinearLayout>

    5、适配器FruitAdapter.java

     1 package com.example.lalala.recyclerviewdemo;
     2 
     3 import android.support.annotation.NonNull;
     4 import android.support.v7.widget.RecyclerView;
     5 import android.view.LayoutInflater;
     6 import android.view.View;
     7 import android.view.ViewGroup;
     8 import android.widget.ImageView;
     9 import android.widget.TextView;
    10 
    11 import java.util.List;
    12 
    13 public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> {
    14     //适配器保存的数据
    15     private List<Fruit> mFruitList;
    16     //view容器类,ViewHolder容纳view
    17     static class ViewHolder extends RecyclerView.ViewHolder{
    18         ImageView imageView;
    19         TextView textView;
    20         public ViewHolder(View view){
    21             super(view);
    22             imageView = (ImageView)view.findViewById(R.id.fruit_image);
    23             textView = (TextView)view.findViewById(R.id.fruit_name);
    24         }
    25     }
    26     //构造函数初始化适配器
    27     public FruitAdapter(List<Fruit> fruitList){
    28         mFruitList = fruitList;
    29     }
    30     //创建ViewHolder
    31     @NonNull
    32     @Override
    33     public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    34         View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.fruit_item,viewGroup,false);
    35         ViewHolder viewHolder = new ViewHolder(view);
    36         return viewHolder;
    37     }
    38     //绑定数据到ViewHolder
    39     @Override
    40     public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
    41         Fruit fruit = mFruitList.get(i);
    42         viewHolder.imageView.setImageResource(fruit.getImageId());
    43         viewHolder.textView.setText(fruit.getName());
    44     }
    45     //返回子项个数
    46     @Override
    47     public int getItemCount() {
    48         return mFruitList.size();
    49     }
    50 }

    6、配置并使用RecyclerView

     1 package com.example.lalala.recyclerviewdemo;
     2 
     3 import android.support.v7.app.AppCompatActivity;
     4 import android.os.Bundle;
     5 import android.support.v7.widget.LinearLayoutManager;
     6 import android.support.v7.widget.RecyclerView;
     7 
     8 import java.util.ArrayList;
     9 import java.util.List;
    10 
    11 public class MainActivity extends AppCompatActivity {
    12 
    13     private List<Fruit> fruitList = new ArrayList<>();
    14 
    15     @Override
    16     protected void onCreate(Bundle savedInstanceState) {
    17         super.onCreate(savedInstanceState);
    18         setContentView(R.layout.activity_main);
    19         initFruit();
    20         //使用RecyclerView
    21         RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recycler_view);
    22         //布局管理器
    23         LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    24         recyclerView.setLayoutManager(layoutManager);
    25         FruitAdapter adapter = new FruitAdapter(fruitList);
    26         recyclerView.setAdapter(adapter);
    27     }
    28     private void initFruit(){
    29         for(int i=0;i<8;i++){
    30             Fruit apple = new Fruit("Apple",R.mipmap.ic_launcher);
    31             fruitList.add(apple);
    32             Fruit pear = new Fruit("Pear",R.mipmap.ic_launcher);
    33             fruitList.add(pear);
    34             Fruit banana = new Fruit("Banana",R.mipmap.ic_launcher);
    35             fruitList.add(banana);
    36         }
    37     }
    38 }

    7、大功告成,运行截图

  • 相关阅读:
    codechef Dynamic GCD [树链剖分 gcd]
    bzoj 4546: codechef XRQRS [可持久化Trie]
    bzoj 4835: 遗忘之树 [树形DP]
    bzoj 4033: [HAOI2015]树上染色 [树形DP]
    bzoj 4591: [Shoi2015]超能粒子炮·改 [lucas定理]
    3167: [Heoi2013]Sao [树形DP]
    bzoj 3812: 主旋律 [容斥原理 状压DP]
    有标号的二分图计数 [生成函数 多项式]
    有标号DAG计数 [容斥原理 子集反演 组合数学 fft]
    BZOJ 3028: 食物 [生成函数 隔板法 | 广义二项式定理]
  • 原文地址:https://www.cnblogs.com/Miracle-Maker/p/9798354.html
Copyright © 2011-2022 走看看