SwipeRefreshLayout 和RecyclerView 使用

使用是布局

  <android.support.v4.widget.SwipeRefreshLayout
            android:id="@id/id_swiperefreshlayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <android.support.v7.widget.RecyclerView
                android:id="@id/id_recyclerview"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:cacheColorHint="@null"
                android:scrollbars="vertical" />
        </android.support.v4.widget.SwipeRefreshLayout>

LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        mRecyclerview.setLayoutManager(layoutManager);
        adapter = new BroadcastRecyclerViewAdapter(context, list,userModel);
        mRecyclerview.setAdapter(adapter);
        mSwipeRefreshWidget.setColorSchemeColors(R.color.btn_blue_normal,R.color.btn_blue_pressed);
        mSwipeRefreshWidget.setOnRefreshListener(new OnRefreshListener() {

            @Override
            public void onRefresh() {
                mType=1;page=1;
                initData();
            }
        });

RecyclerView.Adapteret用户

public class BroadcastRecyclerViewAdapter extends RecyclerView.Adapter<BroadcastViewHolder> {
 public LayoutInflater mLayoutInflater;
    List<BroadcastDetailsModel> mDatas;
    private Context mContext;
    UserDetails userModel;
    BroadcastAPI broadcastApi;
    private IOnItemClickListener<BroadcastDetailsModel> onItemClickListener;
    public BroadcastRecyclerViewAdapter(Context context,
            List<BroadcastDetailsModel> datas,UserDetails userModel){
        mLayoutInflater=LayoutInflater.from(context);
        this.mDatas=datas;
        mContext=context;
        this.userModel=userModel;
        broadcastApi=new BroadcastAPI();
    }

    // 点击事件接口
    public interface OnItemClickListener {
        void onItemClick(View view, int position,BroadcastDetailsModel model);

        void onItemLongClick(View view, int position,BroadcastDetailsModel model);
    }

    public OnItemClickListener mOnItemClickListener;

    public void setOnItemClickListener(OnItemClickListener listener) {
        this.mOnItemClickListener = listener;
    }

    public void addItemLast(List<BroadcastDetailsModel> datas) {
        mDatas.addAll(datas);
    }

    public void addItemTop(List<BroadcastDetailsModel> datas) {
        mDatas = datas;
    } 

    @Override
    public int getItemCount() {
        return mDatas==null?0:mDatas.size();
    }

    @Override
    public void onBindViewHolder(final BroadcastViewHolder holder, final int position) {
        final BroadcastDetailsModel model=mDatas.get(position);
        int type = getItemViewType(position);
         //点击事件在这里实现,主要是利用RecyclerView中填充的布局控件可以被点击这个原理
        if (mOnItemClickListener != null) {
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mOnItemClickListener.onItemClick(holder.itemView, position,model);
                }
            });

            // 长点击事件
            holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    mOnItemClickListener.onItemLongClick(holder.itemView, position,model);
                    return true;
                }
            });

        }
holder.text_loaction.setVisibility(View.VISIBLE);
                holder.text_loaction.setText(model.getProvince() + ","+ model.getCity());
}

@Override
    public BroadcastViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View mView=null;
         BroadcastViewHolder mViewHolder=null;
            mView = mLayoutInflater.inflate(R.layout.broadcast_fragment_item, parent, false);
            mViewHolder = new BroadcastViewHolder(mView);
        return mViewHolder;
    } 

public class BroadcastViewHolder extends RecyclerView.ViewHolder  {
        @Bind(R.id.img_icon)
        public RoundImageView img_icon;
        @Bind(R.id.text_loaction)
        public CustomTextView text_loaction;
    public BroadcastViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);
        }
    }
    

这里只实现了刷新还没有实现上拉加载更多,这里主要是记录下引用android-support-v7-recyclerview.jar 遇到的问题,刚开始我引用 了sdk\extras\android\support\v7\recyclerview\libs下的jar包

运行后提示我找这个类 在网上找了很多有说v4和v7包不一至,我换了sdk\extras\android\support文件夹下的 v4和v7依然没能解决,网上有人说用

sdk\extras\android\m2repository\com\android\support\recyclerview-v7\[版本号]  选择版本号 打开后找到recyclerview-v7-21.0.0.aar 然后解压 找到class.jar然后我将名字改为android-support-v7-recyclerview.jar

我试了 21 ,22,22.2,23.0版本都不行,我的开发环境是eclipse sdk 5.1.1

最后没办法我将sdk\extras\android\support\v7\recyclerview 项目导入到eclipse工程中 然后设置成类库 然后项目引用这个类型 在次运行 就没问题了

不知道是什么原因或者说自带的jar包是不是少什么东西,一直没解决如果有解决的或是什么原因引用的还望告知^0^

时间: 2024-12-27 22:03:09

SwipeRefreshLayout 和RecyclerView 使用的相关文章

Android学习笔记二十九之SwipeRefreshLayout、RecyclerView和CardView

Android学习笔记二十九之SwipeRefreshLayout.RecyclerView和CardView 前面我们介绍了AlertDialog和几个常用的Dialog,ProgressDialog进度条提示框.DatePickerDialog日期选择对话框和TimePickerDialog时间选择对话框.这一节我们介绍几个新的API控件SwipeRefreshLayout.RecyclerView和CardView,这几个API控件都是google在Android5.0推出的.下面我们来学

【FastDev4Android框架开发】实例解析之SwipeRefreshLayout+RecyclerView+CardView(三十五)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50087873 本文出自:[江清清的博客] (一).前言: 作为Android L开始,Google更新了新控件RecyclerView和CardView,这两个控件在之前的文章中已经做了详细介绍和使用,同时在前面还对下拉刷新组件SwipeRefreshLayout进行相关讲解.本来该专题不在更新了,正好昨天有一个群友问到了怎么样结合SwipeRefreshLayou

【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息]个人网站已经上线运行,后面博客以及技术干货等精彩文章会同步更新,请大家关注收藏:http://www.lcode.org 话说RecyclerView已经面市很久,也在很多应用中得到广泛的使用,在整个开发者圈子里面也拥有很不错的口碑,那说明RecyclerView拥有比ListView,GridVi

解决Android SwipeRefreshLayout &amp; RecyclerView使用的Bug

1.引言 用Android提供的support包里的SwipeRefreshLayout和RecyclerView同时使用的时候会出现RecyclerView的item被裁剪的情况,如下图所示: 2.解决此Bug的方法 参考资料如下: http://stackoverflow.com/questions/25178329/recyclerview-and-swiperefreshlayout/25227797#25227797 https://gist.github.com/VladSumtso

使用Android SwipeRefreshLayout了解Android的嵌套滑动机制

SwipeRefreshLayout 是在Android Support Library, revision 19.1.0添加到support v4库中的一个下拉刷新控件,关于android的下拉刷新框架现在有好多,曾经用过XListView,现在工作中基本上无需用到下拉刷新的功能.废话不多说了,这里来记录一下android自带的刷新控件SwipeRefreshLayout的使用,借此顺便来熟悉一下android 在Lollipop版本推出的嵌套滑动机制(NestedScrolling). 首先

scrollview嵌套上下拉控件嵌套recyclerview

相信会碰到很多类似的需求,一个列表控件,然后控件上方的一个头部需要自定义,这样就不好有时候也不能加在列表控件的头部了,那必须得嵌套一层scrollview了,没毛病,那么一般的列表控件都是有上拉下拉的操作,而且一般也是在 github 上找寻一个收藏量高的 来做为一个全局通用的上下拉控件,这里问题就来了,一般的 scrollview 嵌套 recyclerview 或者 listview 都毕竟容易解决,可是在加上一层上下拉控件呢?上下拉控件肯定会有它自己的触摸处理机制,这样你改起来也很麻烦,这

Android实现RecyclerView的下拉刷新和上拉载入很多其它

需求 先上效果图, Material Design风格的下拉刷新和上拉载入很多其它. 源代码地址(欢迎star) https://github.com/studychen/SeeNewsV2 假设对于RecyclerView还不熟悉,參见这篇 Android Material Design学习之RecyclerView取代 ListView 本文链接 http://blog.csdn.net/never_cxb/article/details/50759109 转载请注明出处 下拉刷新 效果图

Recyclerview 实现上拉加载更多

LinearLayoutManager layoutManager; layoutManager = new LinearLayoutManager(getActivity()); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); mRecyclerview.setLayoutManager(layoutManager); mRecyclerview.addOnScrollListener(new OnScrollListen

Android实现RecyclerView自定义列表、点击事件以及下拉刷新

Android使用RecyclerView 1. 什么是RecyclerView RecyclerView 是 Android-support-v7-21 版本中新增的一个 Widgets,官方对于它的介绍则是:RecyclerView 是 ListView 的升级版本,更加先进和灵活. 简单来说就是:RecyclerView是一种新的视图组,目标是为任何基于适配器的视图提供相似的渲染方式.它被作为ListView和GridView控件的继承者,在最新的support-V7版本中提供支持. 2.