Android RecycleView瀑布流
来源:互联网 发布:问卷星回收数据 编辑:程序博客网 时间:2024/05/29 10:09
Android RecycleView瀑布流
1.需要依赖架包
compile 'com.android.support:recyclerview-v7:22.2.1'
2.实现的效果挺好看的,需要的赶紧来试一下MainActivity
import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.support.v7.widget.DefaultItemAnimator;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.Toast;import android.support.v7.widget.StaggeredGridLayoutManager;/** * 瀑布流原理:其实就是动态的将recycle下的网格布局的每个item的高度进行动态随机设置--》LayoutParmas * */public class MainActivity extends Activity{ private RecyclerView mRecy; private List<String> list; private MyRecycleView adapter; //适配器 @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化数据源 initList(); //初始化控件 initView(); } private void initView() { mRecy=(RecyclerView) findViewById(R.id.mRecy); adapter=new MyRecycleView(MainActivity.this, list); //spanCount:列数 orientation:线性方向 //StaggeredGridLayoutManager:recycleView下的实现gridView的管理器 mRecy.setLayoutManager(new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL) ); mRecy.setAdapter(adapter); //设置条目动画:默认的 mRecy.setItemAnimator(new DefaultItemAnimator()); //设置点击事件 onClick(); } //点击事件其实是调用的适配器里面的点击事件 private void onClick() { adapter.setOnItemClickListener(new MyRecycleView.onItemClickListerner() { @Override public void onLongItemClick(View view, int position) { //调用适配器里面的删除的方法 adapter.RemoveView(position); } @Override public void onItemClick(View view, int position) { Toast.makeText(MainActivity.this, "点击了第"+(position+1)+"条数据", 0).show(); } }); } private void initList() { list=new ArrayList<String>(); for(int i=0;i<40;i++){ list.add("第"+(i+1)+"条数据"); } }}MyRecycleView
import java.util.ArrayList;import java.util.List;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.RecyclerView.ViewHolder;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnLongClickListener;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import android.widget.TextView;/* * recycleView 适配器 * */public class MyRecycleView extends RecyclerView.Adapter<MyRecycleView.MyViewHolder>{ private Context ctx; private List<String> list; private List<Integer> mHeights;//这个是每个item的随机高度集合 private onItemClickListerner listener;//自己写的回调接口 public MyRecycleView(Context ctx,List<String> list) { this.ctx=ctx; this.list=list; //初始化item的随机高度,准备后期动态添加 mHeights=new ArrayList<Integer>(); for(int i=0;i<list.size();i++){ mHeights.add((int)(150+Math.random()*300));//随机获取高度,添加到集合中 } } @Override public int getItemCount() { return list.size(); } @Override public void onBindViewHolder(final MyViewHolder holder, int position) { //动态更改item的高度啊 LayoutParams lp=holder.mTv.getLayoutParams(); lp.height=mHeights.get(position); holder.mTv.setLayoutParams(lp); holder.mTv.setText(list.get(position)); //设置回调 if(listener!=null){ holder.itemView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { int pos=holder.getAdapterPosition(); //回调 listener.onItemClick(holder.itemView, pos); } }); holder.itemView.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { int pos=holder.getAdapterPosition(); listener.onLongItemClick(holder.itemView, pos); // RemoveView(pos); return false; } }); } } @Override public MyRecycleView.MyViewHolder onCreateViewHolder(ViewGroup view, int position) { //c初始化及导入item布局 给holder MyViewHolder holder=new MyViewHolder(View.inflate(ctx, R.layout.item, null)); return holder; } // 自己创建的内部类,让它继承自recycleView下的ViewHolder class MyViewHolder extends ViewHolder{ TextView mTv; public MyViewHolder(View view) { super(view); //找id mTv=(TextView) view.findViewById(R.id.mTv); } } //自己定义的回调接口 public interface onItemClickListerner{ void onItemClick(View view,int position); void onLongItemClick(View view,int position); } //设置回调接口的方法 public void setOnItemClickListener(onItemClickListerner listener){ this.listener=listener; } //删除选中条目的方法 public void RemoveView(int position){ list.remove(position); notifyItemRemoved(position); }}xml.布局
activity_main
<android.support.v7.widget.RecyclerView android:id="@+id/mRecy" android:layout_width="match_parent" android:layout_height="match_parent" />item
<?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"> <TextView android:id="@+id/mTv" android:layout_width="100dp" android:layout_height="100dp" android:gravity="center" android:background="#28c8b7" android:layout_marginTop="5dp" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:text="1" /></LinearLayout>
阅读全文
0 0
- Android RecycleView瀑布流
- RecycleView实现瀑布流
- Recycleview实现瀑布流
- recycleview实现瀑布流
- recycleView 瀑布流
- RecycleView 实现瀑布流效果
- 瀑布流效果RecycleView+CardView
- 瀑布流 RecycleView 的 StaggeredGridLayoutManager?
- RecycleView 实现瀑布流 添加分隔
- RecycleView的使用(包括瀑布流)
- RecycleView的瀑布流的使用
- RecycleView实现瀑布流的效果
- recycleview瀑布流Item适应图片
- RecycleView实现瀑布流添加分隔线
- RecycleView 瀑布流 及glide网络加载图片
- RecycleView 瀑布流 item 随意拖拽(ItemTouchHelper) 数据交换
- RecycleView实现item错落且高度不同的瀑布流
- RecycleView 瀑布流中加载更多遇到的问题
- XML方式实现声明式事务管理
- HDU 3449:Consumer(有依赖关系的背包)
- JSP日期格式化
- (转)区块链:为什么说finchain是下一代金融应用平台
- Xpath实战一:解析爬取糗事百科段子
- Android RecycleView瀑布流
- oracle运算符和函数
- hdu AreYouBusy
- Java ==和equals
- 单片机学习札记6---PCF8563显示时间
- 学生信息管理系统6
- 深度学习框架对比
- Udacity机器学习入门笔记——朴素贝叶斯
- Android-使用Android Studio实现第三方QQ登录