Android開發學習之RecyclerView

一、在app/build.gradle中添加RecyclerView依賴java

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

注意依賴版本號android

二、佈局文件activity_main.xml引入RecycleViewapp

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>

三、泛型類型Fruit.javaide

 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 }

四、佈局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>

五、適配器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 }

六、配置並使用RecyclerViewgradle

 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 }

七、大功告成,運行截圖ui

相關文章
相關標籤/搜索