Android滑动组件----RecyclerView
16lz
2021-01-24
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了,然后里面的适配器需要多联系才能熟悉。基本都是固定的写法。。。
更多相关文章
- 比较不错的一系列android深入研究博客,整理在此以记之
- 知乎日报 - 我的第一个Kotlin项目
- ViewPager实现Android向导页
- Android的四大组件之三--Activity(4)----->Activity的启动方式和相
- Android特色开发之桌面组件
- Android(安卓)底部导航栏的两种实现(附源码)(通过FragmentTabHost +
- Android(安卓)任务栈
- Android布局管理器浅析
- Android之路之十七(重要组件之Service)