RecyclerView的横向布局及点击事件(也可做瀑布流效果)
来源:互联网 发布:kingroot是什么软件 编辑:程序博客网 时间:2024/05/29 18:39
1.在build.gradle中加入依赖
dependencies { …… compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'}
2.activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>
fruit_item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <ImageView android:id="@+id/fruit_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:src="@drawable/apple"/> <TextView android:id="@+id/fruit_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10dp" android:text="apple"/></LinearLayout>
3.java代码
package com.cwj.recyclerview;/** * Created by 17551_000 on 2017/9/21. */public class Fruit { private String name; private int imageId; public Fruit(String name, int imageId) { this.name = name; this.imageId = imageId; } public String getName() { return name; } public int getImageId() { return imageId; }}
package com.cwj.recyclerview;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import java.util.List;/** * Created by 17551_000 on 2017/9/21. */public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> { private List<Fruit> mFruitList; static class ViewHolder extends RecyclerView.ViewHolder { View fruitView; ImageView fruitImage; TextView fruitName; //定义一个内部类ViewHolder public ViewHolder(View view) { super(view); fruitView = view; fruitImage = view.findViewById(R.id.fruit_image); fruitName = view.findViewById(R.id.fruit_name); } } public FruitAdapter(List<Fruit> fruitList){ mFruitList = fruitList; } /** * 用于创建ViewHolder实例 * @param parent * @param viewType * @return */ @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item,parent,false); //RecyclerView的点击事件 final ViewHolder holder = new ViewHolder(view); holder.fruitView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int position = holder.getAdapterPosition(); Fruit fruit = mFruitList.get(position); Toast.makeText(view.getContext(), fruit.getName(), Toast.LENGTH_SHORT).show(); } }); holder.fruitImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int position = holder.getAdapterPosition(); Fruit fruit = mFruitList.get(position); Toast.makeText(view.getContext(), fruit.getName(), Toast.LENGTH_SHORT).show(); } }); return holder; } /** * 用于对RecyclerView子项的数据进行赋值 * @param holder * @param position */ @Override public void onBindViewHolder(ViewHolder holder, int position) { Fruit fruit = mFruitList.get(position); holder.fruitImage.setImageResource(fruit.getImageId()); holder.fruitName.setText(fruit.getName()); } /** * 告诉RecyclerView一共有多少子项,并返回数据源的长度 * @return */ @Override public int getItemCount() { return mFruitList.size(); }}
package com.cwj.recyclerview;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { private List<Fruit> fruitList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化水果数据 initFruits(); //获取RecyclerView对象的实例 RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view); //LinearLayoutManager layoutManager = new LinearLayoutManager(this); //创建一个StaggeredGridLayoutManager实例 StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(1,StaggeredGridLayoutManager.VERTICAL); //RecyclerView的横向布局 layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); recyclerView.setLayoutManager(layoutManager); FruitAdapter adapter = new FruitAdapter(fruitList); recyclerView.setAdapter(adapter); } private void initFruits() { for (int i = 0;i < 2; i++){ Fruit apple = new Fruit("苹果",R.drawable.apple); fruitList.add(apple); Fruit banana = new Fruit("香蕉",R.drawable.banana); fruitList.add(banana); Fruit orange = new Fruit("橘子",R.drawable.orange); fruitList.add(orange); Fruit Watermelon = new Fruit("西瓜",R.drawable.watermelon); fruitList.add(Watermelon); Fruit pear = new Fruit("梨",R.drawable.pear); fruitList.add(pear); Fruit Grape = new Fruit("葡萄",R.drawable.grape); fruitList.add(Grape); Fruit Pineapple = new Fruit("菠萝",R.drawable.pineapple); fruitList.add(Pineapple); Fruit strawberry = new Fruit("草莓",R.drawable.strawberry); fruitList.add(strawberry); Fruit cherry = new Fruit("樱桃",R.drawable.cherry); fruitList.add(cherry); Fruit mango = new Fruit("芒果",R.drawable.mango); fruitList.add(mango); } }}
阅读全文
0 0
- RecyclerView的横向布局及点击事件(也可做瀑布流效果)
- RecyclerView 实现瀑布流及点击事件,含点击回调的接口
- Recyclerview实现瀑布流布局及条目的点击事件
- RecyclerView的Item点击事件,增加删除Item瀑布流动画效果,长按拖动Item,RecyclerView复杂布局、实现新闻频道选择器
- RecyclerView采用StaggeredGridLayoutManager布局的瀑布流效果
- Recyclerview横向的滑动与点击事件
- 关于recyclerview的横向布局的宽度以及item的点击事件的添加
- Android RecyclerView 详解(二) 点击事件绑定、瀑布流和Grid的实现
- RecyclerView布局+瀑布流
- Recyclerview 瀑布流效果
- Android RecyclerView 的瀑布流式布局
- 复杂RecyclerView的实现(添加底部瀑布流效果)
- RecyclerView的简单瀑布流效果
- 使用RecyclerView展示瀑布流的效果
- RecyclerView实现瀑布流的效果
- RecyclerView之瀑布流的事件监听
- RecyclerView实现瀑布流效果(二)
- RecyclerView自定义LayoutManager实现横向瀑布流
- 43. 数据结构笔记之四十三最短路径之迪杰斯特拉(Dijkstra )算法
- AngularJS 自定义 server
- 古文觀止卷九_永州韋使君新堂記_柳宗元
- 计算机网络---网络规划与子网划分
- HDU3374 String Problem(kmp,最大最小表示法)
- RecyclerView的横向布局及点击事件(也可做瀑布流效果)
- 轮播与fragment联动
- 数据结构(二)饥饿与死锁的区别
- 44. 数据结构笔记之四十四弗洛伊德Floyd算法
- 字符串格式化-format()
- MVC模型 跟DAO模型的初步认识
- 大三的两场面试下来,我决定回学校读书
- filebeat浅析
- 【leetcode】204. Count Primes(Python & C++)