Recyclerview实现瀑布流布局及条目的点击事件
2017-03-03 11:55
681 查看
package com.example.recyclerview2;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Random;
/**
* Recyclerview实现瀑布流布局及条目的点击事件
*/
public class MainActivity extends AppCompatActivity {
}
package com.example.recyclerview2;
/**
* Created by My on 2017/3/3.
*/
class Fruit {
String name;
int imageId;
}
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Random;
/**
* Recyclerview实现瀑布流布局及条目的点击事件
*/
public class MainActivity extends AppCompatActivity {
private ArrayList<Fruit> mFruitsList; private RecyclerView recyclerview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); initAdapter(); } /** * 初始化数据适配器 */ private void initAdapter() { recyclerview.setAdapter(new FruitAdapter()); } /** * 初始化数据 */ private void initData() { mFruitsList = new ArrayList<>(); mFruitsList.add(new Fruit(getRandomLengthName("apple"), R.drawable.apple_pic)); mFruitsList.add(new Fruit(getRandomLengthName("banana"), R.drawable.banana_pic)); mFruitsList.add(new Fruit(getRandomLengthName("cherry"), R.drawable.cherry_pic)); mFruitsList.add(new Fruit(getRandomLengthName("grape"), R.drawable.grape_pic)); mFruitsList.add(new Fruit(getRandomLengthName("mango"), R.drawable.mango_pic)); mFruitsList.add(new Fruit(getRandomLengthName("orange"), R.drawable.orange_pic)); mFruitsList.add(new Fruit(getRandomLengthName("pear"), R.drawable.pear_pic)); mFruitsList.add(new Fruit(getRandomLengthName("pineapple"), R.drawable.pineapple_pic)); mFruitsList.add(new Fruit(getRandomLengthName("strawberry"), R.drawable.strawberry_pic)); mFruitsList.add(new Fruit(getRandomLengthName("watermelon"), R.drawable.watermelon_pic)); } /** * 随机长度水果名称 * * @param name 水果名称 * @return 1-20随机水果名称长度 */ private String getRandomLengthName(String name) { Random random = new Random(); int nextInt = random.nextInt(20); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i <= nextInt; i++) { stringBuilder.append(name); } return stringBuilder.toString(); } private void initView() { recyclerview = (RecyclerView) findViewById(R.id.recyclerview); // 设置瀑布流布局,3列,垂直布局 StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL); recyclerview.setLayoutManager(layoutManager); } private class FruitAdapter extends RecyclerView.Adapter<ViewHolder> { @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(getApplicationContext(), R.layout.recyclerview_item, null); return new ViewHolder(view); } // 在这个方法中设置recyclerview条目的点击事件 @Override public void onBindViewHolder(ViewHolder holder, int position) { final Fruit fruit = mFruitsList.get(position); holder.iv.setImageResource(fruit.imageId); holder.tv.setText(fruit.name); holder.iv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "点击了图片" + fruit.name, Toast.LENGTH_SHORT).show(); } }); holder.tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "点击了文字" + fruit.name, Toast.LENGTH_SHORT).show(); } }); } @Override public int getItemCount() { return mFruitsList.size(); } } private static class ViewHolder extends RecyclerView.ViewHolder { ImageView iv; TextView tv; ViewHolder(View itemView) { super(itemView); iv = (ImageView) itemView.findViewById(R.id.iv); tv = (TextView) itemView.findViewById(R.id.tv); } }
}
package com.example.recyclerview2;
/**
* Created by My on 2017/3/3.
*/
class Fruit {
String name;
int imageId;
Fruit(String name, int imageId) { this.name = name; this.imageId = imageId; }
}
相关文章推荐
- RecyclerView的Item点击事件,增加删除Item瀑布流动画效果,长按拖动Item,RecyclerView复杂布局、实现新闻频道选择器
- RecyclerView 实现瀑布流及点击事件,含点击回调的接口
- 接口回调实现RecyclerView的条目点击事件
- Android RecyclerView 详解(二) 点击事件绑定、瀑布流和Grid的实现
- RecyclerView的横向布局及点击事件(也可做瀑布流效果)
- RecyclerView 初次体验,实现增加删除条目及item长按和点击事件
- RecyclerView实现分割线、点击事件、条目加载动画
- RecyclerView 使用总结(三):点击事件、GridView等、瀑布流、动态增删
- RecyclerView实现Item点击事件方法二
- 实现RecyclerView的item点击事件的内部监听器
- Android中Recyclerview使用6----添加条目得到点击事件和长按事件(另一种写法,较简单)
- RecyclerView的基本使用(优化图片加载、设置条目间距、设置Adapter、设置点击事件等)
- RecyclerView实现Item点击事件方法三/四
- RecyclerView实现瀑布流布局
- AndroidStudio GradView在RecyclerView中设置条目(Item)点击事件
- RecyclerView 添加头部和尾部,并实现Item的点击事件
- Android实现RecyclerView自定义列表、点击事件以及下拉刷新
- RecyclerView实现瀑布流布局
- Android使用RecyclerView实现自定义列表、点击事件以及下拉刷新
- RecyclerView点击事件OnItemClick的两种实现方式