RecycleView的使用
来源:互联网 发布:2016版excel数据有效性 编辑:程序博客网 时间:2024/06/08 02:11
在使用的时候首先要导入一个依赖
compile 'com.android.support:recyclerview-v7:23.4.0'
下面是关于RecycleView的方法使用
package com.bwie.recyclerviewdemo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.DefaultItemAnimator;import android.support.v7.widget.DividerItemDecoration;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;import android.view.View;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements MyAdapter.OnItemClickListener { private RecyclerView recyclerView; private List<String> list; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化数据 list = new ArrayList<>(); for (int i = 'A'; i < 'z'; ++i){//A1 ,2 z 98 list.add(""+(char)i); } recyclerView = findViewById(R.id.recyclerView); //设置一个线性布局挂历起布局管理器 //HORIZONTAL 设置水平方向 垂直方向 false true true 反转 倒着显示 false 顺序显示 //recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)); //设置一个网格管理器 //Vertical 代表显示多少列 //Horizontal 代表显示多少行 //recyclerView.setLayoutManager(new GridLayoutManager(this,3,GridLayoutManager.HORIZONTAL,false)); //瀑布流布局管理器 recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL)); //设置分割线 recyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL)); //添加条目动画 recyclerView.setItemAnimator(new DefaultItemAnimator()); //设置适配器 adapter = new MyAdapter(this,list); recyclerView.setAdapter(adapter); //设置点击事件 adapter.setOnItemClickListener(this); } public void btnAddItem(View view){ adapter.addItem("我们不一样"); } @Override public void setOnItemClick(View view, int position) { //条目点击事件 //Toast.makeText(this, "条目" + position, Toast.LENGTH_SHORT).show(); adapter.removeItem(position); } @Override public void setOnItemLongClick(View view, int position) { //长按事件 Toast.makeText(this, "长按条目"+position, Toast.LENGTH_SHORT).show(); }}
为recycleview添加适配器
package com.bwie.recyclerviewdemo;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import org.w3c.dom.Text;import java.util.ArrayList;import java.util.List;import java.util.Random;/** * Created by stephen on 2017/12/7. */public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private static final int TYPE_ONE = 0; private static final int TYPE_TWO = 1; private Context context; private List<String> list; //存放没一个View的随机高度 private List<Integer> heightList; public MyAdapter(Context context, List<String> list){ this.context = context; this.list = list; //创建存放View随机高度的集合 heightList = new ArrayList<>(); for (int i = 0;i < list.size();i++){ //产生随机高度 int height = new Random().nextInt(200)+100; heightList.add(height); } } /** * * @param parent * @param viewType * @return */ @Override public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //System.out.println("字段值 :"+viewType);viewType 服务器的字段 View view = null; /*switch (viewType) { case TYPE_ONE: { view = LayoutInflater.from(context).inflate(R.layout.item, parent, false); } break; case TYPE_TWO: { view = LayoutInflater.from(context).inflate(R.layout.item2, parent, false); } break; }*/ view = LayoutInflater.from(context).inflate(R.layout.item, parent, false); ViewHolder viewHolder = new ViewHolder(view); return viewHolder; } /** * 删除一个条目 * @param position 删除的条目位置 */ public void removeItem(int position){ list.remove(position); //notifyDataSetChanged(); notifyItemRemoved(position); } /** * 向RecyclerView中添加一个Item * @param * @param data */ public void addItem(String data){ list.add(data); notifyItemInserted(list.size()-1); } //声明自己的一个事件回调接口 public interface OnItemClickListener{ //条目点击事件 void setOnItemClick(View view,int position); //条目长按事件 void setOnItemLongClick(View view,int position); } private OnItemClickListener onItemClickListener; public void setOnItemClickListener(OnItemClickListener onItemClickListener){ this.onItemClickListener = onItemClickListener; } @Override public void onBindViewHolder(MyAdapter.ViewHolder holder, final int position) { //获取到设置View属性的对象 ViewGroup.LayoutParams params = holder.itemView.getLayoutParams(); //重新定义高度 params.height = heightList.get(position); //保存之前所定义的高度 holder.itemView.setLayoutParams(params); if(position %2 == 0) { //设置文本 holder.tv.setText(list.get(position)); }else{ holder.tv.setText(list.get(position)); } if(null != onItemClickListener) { //回调点击事件 holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //回调 onItemClickListener.setOnItemClick(v,position); } }); holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { onItemClickListener.setOnItemLongClick(v,position); return true;//消费掉 } }); } } @Override public int getItemCount() {//条目数 return list != null?list.size():0; } //获得View的类型 @Override public int getItemViewType(int position) { //奇数这个不局,偶数加载另外一个布局 if(position %2 == 0){ return TYPE_ONE; }else{ return TYPE_TWO; } } //生命我们自己的ViewHolder class ViewHolder extends RecyclerView.ViewHolder{ TextView tv; //View itemViews; public ViewHolder(View itemView) { super(itemView); //itemViews = itemView; tv = itemView.findViewById(R.id.tv); } }}
阅读全文
0 0
- Android RecycleView---- RecycleView的简单使用
- Recycleview的使用
- RecycleView的使用
- RecycleView 的使用
- Android RecycleView的使用
- RecycleView的简单使用
- RecycleView 的使用
- RecycleView的基础使用
- android RecycleView的使用
- RecycleView的学习使用
- RecycleView的使用(一)
- RecycleView的首次使用
- RecycleView的使用
- RecycleView的使用
- RecycleView 的简单使用
- recycleView的使用
- RecycleView的使用
- RecycleView的使用步骤
- 12.8省选总结
- 网络判断+网络请求+TabLayout+XListview+多条目加载.
- OKHttp封装
- 可变参数列表剖析
- 图像像素中通道概念解析
- RecycleView的使用
- 交换机、路由器 数据包转发
- C++连接两个字符串
- java--Demo2(购物)
- 12.08学习计划
- Glide图片加载框架
- Windows程序设计:GDI映射模式
- Android_Glide图片加载框架
- jdbc.properties 文件的配置