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.RecyclerView2 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 <TextView10 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容纳view17 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 //创建ViewHolder31 @NonNull32 @Override33 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 //绑定数据到ViewHolder39 @Override40 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 @Override47 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 @Override16 protected void onCreate(Bundle savedInstanceState) {17 super.onCreate(savedInstanceState);18 setContentView(R.layout.activity_main);19 initFruit();20 //使用RecyclerView21 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、大功告成,运行截图
本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728