经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android » 查看文章
Android开发学习之RecyclerView
来源:cnblogs  作者:52Hz  时间:2018/10/17 8:59:28  对本文有异议

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

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

注意依赖版本号

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

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

3、泛型类型Fruit.java

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

4、布局fruit_item.xml

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

5、适配器FruitAdapter.java

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

6、配置并使用RecyclerView

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

7、大功告成,运行截图

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号