Recvclerview上拉加载

来源:互联网 发布:人工智能接口 编辑:程序博客网 时间:2024/06/03 21:42
Activity代码

private String url = "http://tingapi.ting.baidu.com/v1/restserver/ting";
    private ImageView mIvTop;
    /**
     * haha
     */
    private TextView mTvTitle;
    /**
     * haha
     */
    private TextView mTvTime;
    /**
     * haha
     */
    private TextView mTvComment;
    private RecyclerView mRv;
    private List<Itembean.SongListBean> list = new ArrayList<>();
    private MyAdapter myAdapter;
    private DisplayImageOptions options;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initImageLoader();

        initView();
        Map<String, String> params = new HashMap<>();
        params.put("type", "1");
        OkHttpUtils.getInstance().doGet(url, params, Itembean.class, new OnNetListener<Itembean>() {
            @Override
            public void onSuccess(Itembean itembean) {
                myAdapter.refreshData(itembean.getSong_list());
                ImageLoader.getInstance().displayImage(itembean.getBillboard().getPic_s192(), mIvTop, options);
                mTvTitle.setText(itembean.getBillboard().getName());
                mTvTime.setText(itembean.getBillboard().getUpdate_date());
                mTvComment.setText(itembean.getBillboard().getComment());
            }
        });
    }
    private void initImageLoader() {
        options = new DisplayImageOptions.Builder()
                .showStubImage(R.mipmap.ic_launcher)          // 设置图片下载期间显示的图片
                .showImageForEmptyUri(R.mipmap.ic_launcher)  // 设置图片Uri为空或是错误的时候显示的图片
                .showImageOnFail(R.mipmap.ic_launcher)       // 设置图片加载或解码过程中发生错误显示的图片
                .cacheInMemory(true)                        // 设置下载的图片是否缓存在内存中
                .cacheOnDisc(true)                          // 设置下载的图片是否缓存在SD卡中
                .displayer(new RoundedBitmapDisplayer(20))  // 设置成圆角图片
                .build();
    }
    private void initView() {
        mIvTop = (ImageView) findViewById(R.id.iv_top);
        mTvTitle = (TextView) findViewById(R.id.tv_title);
        mTvTime = (TextView) findViewById(R.id.tv_time);
        mTvComment = (TextView) findViewById(R.id.tv_comment);
        mRv = (RecyclerView) findViewById(R.id.rv);
        //设置布局管理器
        mRv.setLayoutManager(new LinearLayoutManager(this));
        //分割线
        mRv.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
        //设置适配器
        myAdapter = new MyAdapter(this, list);
        mRv.setAdapter(myAdapter);

        //加载更多
        mRv.setOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
                int lastVisibleItemPosition = linearLayoutManager.findLastVisibleItemPosition();
                if (newState == 0 && lastVisibleItemPosition == (linearLayoutManager.getChildCount() - 1)) {
                    //加载更多
                    Map<String, String> params = new HashMap<>();
                    params.put("type", "2");
                    OkHttpUtils.getInstance().doGet(url, params, Itembean.class, new OnNetListener<Itembean>() {
                        @Override
                        public void onSuccess(Itembean itembean) {
                            List<Itembean.SongListBean> moreList = itembean.getSong_list();
                            myAdapter.loadMore(moreList);
       
       
                            ImageLoader.getInstance().displayImage(itembean.getBillboard().getPic_s192(), mIvTop, options);
                            mTvTitle.setText(itembean.getBillboard().getName());
                            mTvTime.setText(itembean.getBillboard().getUpdate_date());
                            mTvComment.setText(itembean.getBillboard().getComment());
                        }
                    });
                }
            }
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
            }
        });
    }




适配器
private Context context;
    private List<Itembean.SongListBean> list;
    private final DisplayImageOptions options;
    public MyAdapter(Context context, List<Itembean.SongListBean> list) {
        this.context = context;
        this.list = list;
        // 设置图片下载期间显示的图片
// 设置图片Uri为空或是错误的时候显示的图片
// 设置图片加载或解码过程中发生错误显示的图片
// 设置下载的图片是否缓存在内存中
// 设置下载的图片是否缓存在SD卡中
// 设置成圆角图片
        options = new DisplayImageOptions.Builder()
                .showStubImage(R.mipmap.ic_launcher)          // 设置图片下载期间显示的图片
                .showImageForEmptyUri(R.mipmap.ic_launcher)  // 设置图片Uri为空或是错误的时候显示的图片
                .showImageOnFail(R.mipmap.ic_launcher)       // 设置图片加载或解码过程中发生错误显示的图片
                .cacheInMemory(true)                        // 设置下载的图片是否缓存在内存中
                .cacheOnDisc(true)                          // 设置下载的图片是否缓存在SD卡中
                .displayer(new RoundedBitmapDisplayer(20))  // 设置成圆角图片
                .build();
    }
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
        return new MyViewHolder(view);
    }
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        Itembean.SongListBean songListBean = list.get(position);
        MyViewHolder myViewHolder = (MyViewHolder) holder;
        ImageLoader.getInstance().displayImage(songListBean.getPic_small(), myViewHolder.iv_left, options);
        myViewHolder.tv_songname.setText(songListBean.getTitle());
        myViewHolder.tv_songzj.setText(songListBean.getAlbum_title());
    }
    @Override
    public int getItemCount() {
        return list.size();
    }
    private class MyViewHolder extends RecyclerView.ViewHolder {
        private ImageView iv_left;
        private TextView tv_songname;
        private TextView tv_songzj;
        public MyViewHolder(View itemView) {
            super(itemView);
            iv_left = itemView.findViewById(R.id.iv_left);
            tv_songname = itemView.findViewById(R.id.tv_songname);
            tv_songzj = itemView.findViewById(R.id.tv_songzj);
        }
    }
    public void loadMore(List<Itembean.SongListBean> list) {
        this.list.addAll(list);
        notifyDataSetChanged();
    }
    public void refreshData(List<Itembean.SongListBean> list) {
        this.list.clear();
        this.list.addAll(list);
        notifyDataSetChanged();
    }
原创粉丝点击