ListView由于其强大的功能,再过去的Android开发中,可以说是贡献卓越,直到今天仍然有不计其数的程序仍然使用。不过ListView也是有缺点的,它的扩展性不是太好,只能实现纵向滚动,不能实现横向滚动。所以Android就提供了一个更加强大的滚动组件----RecyclerView。他在ListView的基础上实现了更加强大的功能。

基本用法

1.增加依赖
这里我就不多说什么了,直接在UI界面点击后面的下载符号就能下载。

到时候后面会有一个下载按钮的。

2.修改activity_main.xml代码,并添加

<?xml version="1.0" encoding="utf-8"?>    

fruit_item.xml

<?xml version="1.0" encoding="utf-8"?>        

这里就是定一了一个RecyclerView的滑动组件

3.定义Fruit和Adapter

public class Fruit {    private String name;    private int imageId;    public Fruit(String name,int imageId){        this.name = name;        this.imageId = imageId;    }    public int getImageId() {        return imageId;    }    public String getName() {        return name;    }}
public class FruitAdapter extends RecyclerView.Adapter {    private List mFruitList;    //构造函数将传入的fruitList赋值给mFruitList    public FruitAdapter(List fruitList){        this.mFruitList = fruitList;    }    //这里定义的是我们FruitAdapter的内部泛型类  就是类似与数据模型    static class ViewHolder extends RecyclerView.ViewHolder{        ImageView fruitImage;        TextView fruitName;        public ViewHolder(@NonNull View itemView) {            super(itemView);            fruitImage = (ImageView) itemView.findViewById(R.id.fruit_image);            fruitName = (TextView) itemView.findViewById(R.id.fruit_name);        }    }    @NonNull    @Override    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {        //加载  加载的xml布局  父组件  false  固定写法        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item,parent,false);        //初始化ViewHolder        ViewHolder holder = new ViewHolder(view);        return holder;    }    @Override    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {        //获取Fruit实例        Fruit fruit = mFruitList.get(position);        //设置ViewHolder模型的资源        holder.fruitImage.setImageResource(fruit.getImageId());        holder.fruitName.setText(fruit.getName());    }    @Override    public int getItemCount() {        return mFruitList.size();    }}

4.修改MainActivity代码

public class MainActivity extends AppCompatActivity {    private static final String TAG = "MainActivity";    private List fruitList = new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initFruit();  //初始化水果数据        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);        LinearLayoutManager layoutManager = new LinearLayoutManager(this);        recyclerView.setLayoutManager(layoutManager);  //这里的layoutManager用于指定recyclerView的布局方式        FruitAdapter adapter = new FruitAdapter(fruitList);        recyclerView.setAdapter(adapter);    }    private void initFruit() {        for(int i = 0;i < 4;i++){            Fruit apple = new Fruit("apple",R.drawable.ic_launcher_background);            Fruit banana = new Fruit("banana",R.drawable.ic_launcher_background);            Fruit orange = new Fruit("orange",R.drawable.ic_launcher_background);            Fruit watermelon = new Fruit("watermelon",R.drawable.ic_launcher_background);            Fruit strawberry = new Fruit("strawberry",R.drawable.ic_launcher_background);            fruitList.add(apple);            fruitList.add(banana);            fruitList.add(orange);            fruitList.add(watermelon);            fruitList.add(strawberry);        }    }}

运行。。。

ok了,然后里面的适配器需要多联系才能熟悉。基本都是固定的写法。。。

更多相关文章

  1. 比较不错的一系列android深入研究博客,整理在此以记之
  2. 知乎日报 - 我的第一个Kotlin项目
  3. ViewPager实现Android向导页
  4. Android的四大组件之三--Activity(4)----->Activity的启动方式和相
  5. Android特色开发之桌面组件
  6. Android(安卓)底部导航栏的两种实现(附源码)(通过FragmentTabHost +
  7. Android(安卓)任务栈
  8. Android布局管理器浅析
  9. Android之路之十七(重要组件之Service)

随机推荐

  1. Solr之搭建Solr6.0服务并从Mysql上导入数
  2. 无法使用php连接到mysql
  3. 使用格式化输出自动扩展Python列表
  4. 在SQL中声明@变量返回错误
  5. 从Node.js上的mysql结果JSON获取一个Arra
  6. Windows系统下MySQL解压版添加到系统服务
  7. 【MySQL 技巧分享】 mysql -e 加 v 简化
  8. MySQL索引之B+树
  9. 【PHP】当mysql遇上PHP
  10. phpMyAdmin 尝试连接到 MySQL 服务器,但服