RecycleView原生添加上拉加载

来源:互联网 发布:ubuntu trusty 源 编辑:程序博客网 时间:2024/06/05 19:35

RecycleView添加上拉刷新

    private void initRecycleView(List<Music.SongListBean> list_bean) {        final LinearLayoutManager layoutManager = new LinearLayoutManager(this);        main_recycle.setLayoutManager(layoutManager);        final RecycleAdapter recycleAdapter=new RecycleAdapter(this,list_bean);        main_recycle.setAdapter(recycleAdapter);        //上拉加载数据        main_recycle.addOnScrollListener(new RecyclerView.OnScrollListener() {            //最后一个Itme的位置            int lastVisibleItem=0;            @Override            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {                super.onScrollStateChanged(recyclerView, newState);                if (newState == RecyclerView.SCROLL_STATE_IDLE) {                    if (lastVisibleItem + 1 == recycleAdapter.getItemCount()) {                        new Handler().postDelayed(new Runnable() {                            @Override                            public void run() {                                Toast.makeText(MainActivity.this, "上拉加载数据", Toast.LENGTH_SHORT).show();                            }                        }, 500);                    }                }            }            @Override            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {                super.onScrolled(recyclerView, dx, dy);                // 在滑动完成后,拿到最后一个可见的item的位置                lastVisibleItem = layoutManager.findLastVisibleItemPosition();            }        });    }

RecycleView的适配器

package com.bwie.test.adapter;import android.content.Context;import android.media.Image;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import com.bwie.test.R;import com.bwie.test.app.MyApplication;import com.bwie.test.bean.Music;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;/** * Created by XP on 2017/10/16. */public class RecycleAdapter extends RecyclerView.Adapter {    private Context context;    private List<Music.SongListBean> song_list;    private DisplayImageOptions options;    public RecycleAdapter(Context context,List<Music.SongListBean> song_list)    {        this.context=context;        this.song_list=song_list;        options=MyApplication.buildDisplayOption();    }    private static final int TYPE_ITEM=0;    private static final int TYPE_FOOT=1;    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        if(viewType==TYPE_FOOT)        {            View view=LayoutInflater.from(context).inflate(R.layout.footer_item,parent,false);            return new FooterViewHolder(view);        }        View view=LayoutInflater.from(context).inflate(R.layout.recycle_item,parent,false);        return new ItemViewHodler(view);    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {        int type = getItemViewType(position);        if(type==TYPE_ITEM)        {            Music.SongListBean listBean=song_list.get(position);            ImageLoader.getInstance().displayImage(listBean.getPic_small(),((ItemViewHodler)holder).item_iv,options);            ((ItemViewHodler)holder).title.setText(listBean.getTitle());            ((ItemViewHodler)holder).content.setText(listBean.getAuthor()+" - "+listBean.getAlbum_title());        }    }    @Override    public int getItemCount() {        return song_list.size()+1;    }    @Override    public int getItemViewType(int position) {        if(position+1==getItemCount())        {            return TYPE_FOOT;        }        return TYPE_ITEM;    }    public class ItemViewHodler extends RecyclerView.ViewHolder    {        ImageView item_iv;        TextView title,content;        public ItemViewHodler(View itemView) {            super(itemView);            item_iv= (ImageView) itemView.findViewById(R.id.item_image);            title= (TextView) itemView.findViewById(R.id.item_title);            content= (TextView) itemView.findViewById(R.id.item_content);        }    }    public class FooterViewHolder extends RecyclerView.ViewHolder    {        public FooterViewHolder(View itemView) {            super(itemView);        }    }}

RecycleView的Footer的xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="50dp">    <TextView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:text="上拉加载"        android:gravity="center"        android:textColor="#f00"        android:textSize="19dp"/></RelativeLayout>