RecyclerView 和 ViewHolder

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setActionBar(toolbar);

        final SwipeRefreshLayout srl = (SwipeRefreshLayout) findViewById(R.id.srl);
        srl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                srl.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        srl.setRefreshing(false);
                    }
                },3000);
            }
        });
        srl.setColorSchemeResources(android.R.color.holo_blue_bright,
                android.R.color.holo_green_light,
                android.R.color.holo_orange_light,
                android.R.color.holo_red_light);

        RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview);

        StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2,LinearLayoutManager.VERTICAL);
        //layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        mRecyclerView.setLayoutManager(layoutManager);

        mRecyclerView.setAdapter(new Myadapter());
    }

    private class Myadapter extends RecyclerView.Adapter<Myadapter.ListHoldewer>{
        //设置条目
        @Override
        public ListHoldewer onCreateViewHolder(ViewGroup parent, int viewType) {
            //TextView textview = new TextView(MainActivity.this);
            View view = View.inflate(MainActivity.this, R.layout.aaaa, null);
            return new ListHoldewer(view);
        }

        //获取条目数据
        @Override
        public void onBindViewHolder(ListHoldewer holder, int position) {
            holder.setData(position);
        }
        //获取条目个数
        @Override
        public int getItemCount() {
            return 100;
        }
        class ListHoldewer extends RecyclerView.ViewHolder{
            TextView textview1;
            TextView textview2;
            View mitemView;
            public ListHoldewer(View itemView) {
                super(itemView);
                mitemView = itemView;
                textview1 = (TextView) itemView.findViewById(R.id.text1);
                textview2 = (TextView) itemView.findViewById(R.id.text2);
            }
            public void setData(int position) {
                textview1.setText("当前的位置:"+position);
                textview2.setText("当前显示的文本");
                mitemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(MainActivity.this,textview1.getText(),Toast.LENGTH_LONG).show();
                    }
                });
            }
        }
    }
}
时间: 2024-08-16 11:43:34

RecyclerView 和 ViewHolder的相关文章

RecyclerView中ViewHolder重用机制理解(解决图片错乱和闪烁问题)

RecyclerView中ViewHolder重用机制理解(解决图片错乱和闪烁问题) 对于使用ViewHolder引起的图片错乱问题,相信大部分人都有遇到过,我也一样,对于解决方法也有所了解,但一直都是知其然不知其所以然. 所以,这次直接把ViewHolder的工作原理,通过简单的demo代码来验证一次,验证后对于图片错乱和闪烁这种问题的成因就很清楚了. 下面先上一副图 这幅图就比较清晰的画出了ViewHolder的工作原理. 可以看到,图中左上角item1上面有一条蓝色的线,item7下面也有

关于RecyclerView中Viewholder和View的缓存机制的探究

这个题目放在草稿箱里面许久了,一直没有动力提笔.趁现在公司人还没有来齐,工作量还不是很大,就挤出来时间来把它完善了. 我们知道,RecyclerView是经典的ListView的进化与升华,它比ListView更加灵活,但也因此引入了一定的复杂性.最新的v7支持包新添加了RecyclerView. 我们知道,ListView通过使用ViewHolder来提升性能.ViewHolder通过保存item中使用到的控件的引用来减少findViewById的调用,以此使ListView滑动得更加顺畅.但

Android 自定义RecyclerView 实现真正的Gallery效果

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38173061 ,本文出自:[张鸿洋的博客] 上一篇博客我使用自定义HorizontalScrollView写了一个具有HorizontalScrollView效果和ViewPager特性的横向图片轮播,详见:Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果.其实制作横向滚动的不得不说另一个控件,就是Google

RecyclerView借助ItemTouchHelper实现拖动和滑动删除功能

RecyclerView是官方推荐代替ListView的空间,怎样实现RecyclerView列表元素的拖动呢? 官方提供了ItemTouchHelper类使用过程例如以下: 定义ItemTouchHelper.Callback实现类,下面是几个重要的方法 package com.zms.copyapp.helper; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.It

浅谈Android RecyclerView

Android RecyclerView 是Android5.0推出来的,导入support-v7包即可使用. 个人体验来说,RecyclerView绝对是一款功能强大的控件. 首先总结下RecyclerView的特点: 1.支持不同方向,不同排版模式,实现多种展现数据的形式,涵盖了ListView,GridView,瀑布流等数据表现的形式 2.内部实现了回收机制,无需我们考虑View的复用情况 3.取消了onItemClick等点击事件,需要自己手动去写 -------------------

Android最新组件RecyclerView,替代ListView

转载请注明出处:http://blog.csdn.net/allen315410/article/details/40379159 万众瞩目的android最新5.0版本号不久前已经正式公布了,对于我这样对新事物不感冒的人来说,自然也是会关注的,除了新的android5.0带来的新的UI设计和用户体验之外,最让android程序猿感兴趣的是5.0版本号的sdk和一大堆新的API.5.0据说是额外添加或者改动了5000个API,新增了一些新的组件,以下介绍的RecyclerView就是当中之中的一

Listview和RecyclerView区别

1 Listview中ViewHolder是需要自定义的,在RecyclerView中ViewHolder是谷歌已经封装好的 2 Listview中的Item是只能垂直滑动的,RecyclerView可以水平滑动或者垂直滑动,针对多种类型条目的展示效果,如瀑布流 网格 支持多种类型 3 Listview中删除或添加item时,item是无法产生动画效果的,在RecyclerView中添加.删除或移动item时有两种默认的效果可以选择SimpleItemAnimator(简单条目动画) 和 Def

RecyclerView实现条目Item拖拽排序与滑动删除

RecyclerView实现条目Item拖拽排序与滑动删除 版权声明:转载请注明本文转自严振杰的博客: http://blog.csdn.net/yanzhenjie1003 效果演示 直播视频讲解:[http://pan.baidu.com/s/1miEOtwG1 推荐大家结合我直播的视频看效果更好. 本博客源码传送门. 需求和技术分析 RecyclerView Item拖拽排序::长按RecyclerView的Item或者触摸Item的某个按钮. RecyclerView Item滑动删除:

RecyclerView添加头部和底部视图的实现

ListView是有addHeaderView和 addFooterView两个方法的. 但是作为官方推荐的ListView的升级版RecyclerView缺无法实现这两个方法. 那么如果使用RecyclerView实现这两个方法的效果该怎么做呢? 网上查询了很久,试过各种各样的实现方式,终于让我发现一个还不错的实现方法,那么就给大家推荐一下. 项目地址(别人写的,非博主的)https://github.com/jczmdeveloper/XCRecyclerView 我看了下这个源码,很简单,