文档章节

RecyclerView的使用

东西南瓜西葫芦
 东西南瓜西葫芦
发布于 2016/01/01 18:16
字数 461
阅读 157
收藏 4

1,java

RecyclerView mRecyclerView;
List<> mList = new ArrayList();
public void initWidget() {
    setContentView(R.layout.activity_main);
    VarietyAdapter varietyAdapter = new VarietyAdapter(mList);
    mRecyclerView = (RecyclerView) findViewById(R.id.variety_selection_recyclerView);
    //瀑布流,列数是5
    StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(5, StaggeredGridLayoutManager.VERTICAL);
    //线性
    //LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    //卡片
    //GridLayoutManager mGridLayoutManager = new GridLayoutManager(this,5);
    mRecyclerView.setLayoutManager(staggeredGridLayoutManager);
    //设置recycler拥有固定的大小,提高展示效率
    mRecyclerView.setHasFixedSize(true);
    //设置默认的动画,在移除和添加的效果下展现,现在github上可以找到许多拓展,有兴趣的可以找找
    //admBinding.modulationRecyclerView.setItemAnimator(new DefaultItemAnimator());
    mRecyclerView.setAdapter(varietyAdapter);

    //点击事件需要自己写在Adapter里
    varietyAdapter.setOnItemClickListener(this);
    //刷新列表-数据变更时
    varietyAdapter.refresh(mList);
}

2,适配器Adapter

public class VarietyAdapter extends RecyclerView.Adapter implements View.OnClickListener,View.OnLongClickListener{
//    private TextView name;
    List<String> mList;
    public VarietyAdapter(List<String> list) {
        mList = list;
    }
    class ViewHolder extends RecyclerView.ViewHolder{
        private TextView name;
        public ViewHolder(View itemView) {
            super(itemView);
            name = (TextView) itemView.findViewById(R.id.item_text);
        }

        public TextView getName() {
            return name;
        }
    }
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item,null);
        ViewHolder viewHolder = new ViewHolder(view);
        //用于OnItemClickLitener的点击事件
        view.setOnClickListener(this);
        view.setOnLongClickListener(this);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        ViewHolder vh = (ViewHolder) holder;
        vh.getName().setText(mList.get(position));
        //用于OnItemClicklistener的position 标记
        vh.itemView.setTag(position);
    }
    @Override
    public int getItemCount() {
        return mList.size();
    }
    //刷新数据- - -添加
    public void  addItem(List<String> list,int postion){
        mList = list;
        //新添加一条
        notifyItemInserted(postion);
    }
    //刷新数据- - -删除
    public void deleteItem(List<String> list,int postion){
        mList = list;
        //删除一条
        notifyItemRemoved(postion);
    }
    //刷新数据- - -全部,一般用这个就好
    public void refresh(List<Variety> list) {
        mVarietyList = list;
        notifyDataSetChanged();//刷新全部数据
    }
    //
    /**
     * 定义item点击事件||||
     * */
    //子布局的点击事件
    public void onClick(View v) {
        if (mOnItemClickListener != null) {
            //注意这里使用getTag方法获取数据
            mOnItemClickListener.onItemClick(v, Integer.parseInt(v.getTag().toString()));
        }
    }
    //
    private OnRecyclerViewItemClickListener mOnItemClickListener = null;
    //define interface
    public static interface OnRecyclerViewItemClickListener {
        void onItemClick(View view, int position);
    }
    public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
        this.mOnItemClickListener = listener;
    }
    /**长按点击事件*/
    @Override
    public boolean onLongClick(View v) {
        if (mOnItemLongClickListener != null) {
            //注意这里使用getTag方法获取数据
            mOnItemLongClickListener.onItemLongClick(v, Integer.parseInt(v.getTag().toString()));
        }
        return false;
    }
    private OnRecyclerViewItemLongClickListener mOnItemLongClickListener = null;
    public static interface OnRecyclerViewItemLongClickListener {
        void onItemLongClick(View view, int position);
    }
    public void setOnItemLongClickListener(OnRecyclerViewItemLongClickListener listener) {
        this.mOnItemLongClickListener = listener;
    }
}


© 著作权归作者所有

下一篇: android UI控件
东西南瓜西葫芦
粉丝 1
博文 23
码字总数 7490
作品 0
临沂
程序员
私信 提问
android之recyclerview的基本使用

Google在推出Android5.0的时候推出了Material Design ,而RecyclerView是Material Design 重要组件之一。当然还有CardView/Palette。 RecyclerView是用来替换传统的ListView和GridView,瀑布流...

墨宇hz
2016/03/21
0
0
赵彦军/RecyclerView

RecyclerView RecyclerView不再负责显示工作,用法比ListView更解耦。和ListView不一样的是,RecyclerView不再负责Item的摆放等显示方面的功能。所有和布局、绘制等方面的工作Google都其拆分成...

赵彦军
2016/12/02
0
0
Android控件RecyclerView和ListView的异同

在我的一篇介绍Android新控件RecyclerView的博客( Android L新控件RecyclerView简介 )中,一个读者留言说RecyclerView跟ListView之间好像没有什么不同,我觉得这是一个好问题,应该明确地区...

小克898
2016/08/16
27
0
RecyclerView基本使用

博客地址 背景 以前在展示列表时一直都是在使用ListView。 唯一的区别大概就是适配器Adapter的不同而已。 但是后来接触到了RecyclerView之后,就喜欢上了RecyclerView。 因此本篇打算说下Rec...

安卓小哥
2017/11/27
0
0
Android进阶——框架打造之RecyclerView框架

前言 RecyclerView已经完全替代了ListView的开发,其强大之处在于性能、内存、使用、灵活、丰富的API、动画、事件处理上都可以完美的体现出来,对于开发者来说RecyclerView是必须精通的一关,...

qq_30379689
2018/01/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java编程学习-Java虚拟机(JVM)以及跨平台原理

相信大家已经了解到Java具有跨平台的特性,可以“一次编译,到处运行”,在Windows下编写的程序,无需任何修改就可以在Linux下运行,这是C和C++很难做到的。 那么,跨平台是怎样实现的呢?这...

Java领航员
29分钟前
0
0
学JFinal不迷路,JFinal优质资源列表(欢迎反馈更新)

学JFinal不迷路,记录一下JFinal相关的资源、产品、讲师等信息(所有信息排名不分先后)。 一、相关站点: 1、JFinal官网-问答、分享、文档、交流、俱乐部 http://www.jfinal.com 2 、JFina...

山东-小木
33分钟前
1
0
项目学习(2)-order-job

在当前的系统中,因为并发量并不高,服务之间发起异步请求或者异步调用时,没有使用到消息中间件。 而是在各个服务(子系统)的数据库中,创建了event_queue事件对列表和event_handler事件处...

太猪-YJ
41分钟前
1
0
gradle grovvy中的闭包

1. 无参数的闭包 //这b1就是一个闭包def b1={ println "hello b1"}//定义方法,包含闭包类型的参数def method1(Closure closure){closure()}//执行method1method1(b1) 执行结果 ...

edison_kwok
今天
3
0
基于Spring Boot + Dubbo的全链路日志追踪(一)

一、 概要 当前公司后端整体架构为:Spring Boot + Dubbo。由于早期项目进度等原因,对日志这块没有统一的规范,基本上是每个项目自己管自己的日志。这也对后面的问题排查带来了很大的困难,...

明天以后
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部