使用pullToRefresh实现下拉刷新,上拉加载

首先导入pullToRefresh的依赖

下载地址  https://github.com/chrisbanes/Android-PullToRefresh

导入demo之后需要更改pullToRefresh的Gradle文件版本,和当前程序的版本对应

也可以直接导入依赖到Gradle 中(目前只支持Android Studio)

compile 'com.jwenfeng.pulltorefresh:library:1.0.3'

布局文件

<?xml version="1.0" encoding="utf-8"?>
<com.handmark.pulltorefresh.library.PullToRefreshListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pull_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

pullToRefresh提供的布局非常灵活,可以根据需要进行选择。

Activity配置

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;

import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

import java.util.ArrayList;
import java.util.List;

import jiangguxu.bawei.com.myapplication.adapter.PullAdapter;
import jiangguxu.bawei.com.myapplication.bean.MovieBean;
import jiangguxu.bawei.com.myapplication.net.NetUtils;

public class PullActivity extends AppCompatActivity implements NetUtils.NetCallback {

    private PullToRefreshListView pull_list;
    private String url="http://172.17.8.100/movieApi/movie/v1/findReleaseMovieList?userId=1&sessionId=15320748258726&page=1&count=";
    private int count=5;
    private List<MovieBean.ResultBean> resultBeanList = new ArrayList<>();
    private PullAdapter adapter;
    private NetUtils instance;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pull);
        pull_list = findViewById(R.id.pull_list);
        instance = NetUtils.getInstance();
        instance.getDataFromServer(url+count,this);
        adapter = new PullAdapter(resultBeanList,this);
        pull_list.setAdapter(adapter);
    }

    @Override
    public void onSuccess(String result) {
        Log.i("aaaa",result);
        Gson gson = new Gson();
        MovieBean movieBean = gson.fromJson(result, MovieBean.class);
        if (count == 5){
            resultBeanList.clear();
        }
        resultBeanList.addAll(movieBean.getResult());
        adapter.notifyDataSetChanged();
        //设置刷新模式,Both表示头部和底部都可以刷新
        pull_list.setMode(PullToRefreshListView.Mode.BOTH);
        pull_list.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                count =5;
                instance.getDataFromServer(url+count,PullActivity.this);
                pull_list.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        pull_list.onRefreshComplete();
                    }
                },1000);
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                count ++;
                instance.getDataFromServer(url+count,PullActivity.this);
                pull_list.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        pull_list.onRefreshComplete();
                    }
                },1000);
            }

        });
    }

    @Override
    public void onError(String errorMsg) {

    }
}

猜你喜欢

转载自blog.csdn.net/Do_the_best_/article/details/82011437