您的位置:首页 > 其它

pulltorefresh上拉刷新,下拉加载

2018-01-16 15:56 323 查看
//布局页面

<
4000
pre style="background-color:#ffffff;color:#000000;font-family:'宋体';font-size:12.8pt;"><com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pull"
android:layout_width="match_parent"
android:layout_height="match_parent" >

</com.handmark.pulltorefresh.library.PullToRefreshListView>
lw.setMode(PullToRefreshBase.Mode.BOTH);
lw.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
i=1;
j=1;
url="http://api.expoon.com/AppNews/getNewsList/type/1/p/"+i;
read();
}

@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
i++;
j=2;
url="http://api.expoon.com/AppNews/getNewsList/type/1/p/"+i;
read();
}
});
private void read(){
MyTask myTask=new MyTask(new MyTask.Icallback() {
@Override
public void updateUiByjson(String string) {
Gson gson=new Gson();
Bean bean = gson.fromJson(string, Bean.class);
if(j==1){
data.clear();
}
//添加新的集合数据
data.addAll(bean.getData());

//设置适配器
setLvAdapter();

//关闭头尾视图
lw.onRefreshComplete();
}
});
myTask.execute(url);
}
public void setLvAdapter(){
if(adapter==null){
adapter = new MyAdapter();
lw.setAdapter(adapter);
}else {
adapter.notifyDataSetChanged();
}
}

//主页面

package zhanghaijiao.bawei.com.pulltorefresh_demo;

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

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

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

public class MainActivity extends AppCompatActivity {

    private PullToRefreshListView pullToRefreshListView;
    private int pageIndex=1;
    private String url="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page="+pageIndex;

    private MyAdapter adapter;
    private List<Result.NewslistEntity> newslist=new ArrayList<>();

    private int operType=1;//1:刷新 2:加载更多

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

        pullToRefreshListView = findViewById(R.id.plv);

        initPlv();

        //请求网络数据
        requestNetData();

    }

    /**
     * 请求网络数据
     */
    private void requestNetData() {
        if(NetStateUtil.isConn(this)){
            MyTask myTask=new MyTask(new MyTask.Icallbacks() {
                @Override
                public void updateUiByjson(String jsonstr) {
                    Gson gson=new Gson();
                    Result result = gson.fromJson(jsonstr, Result.class);

                    if(operType==1){
                        newslist.clear();
                    }
                    //添加新的集合数据
                     newslist.addAll(result.getNewslist());

                    //设置适配器
                    setLvAdapter();

                    //关闭头尾视图
                    pullToRefreshListView.onRefreshComplete();
                }
            });
            myTask.execute(url);

        }else{
            NetStateUtil.showNoNetWorkDlg(this);
        }

    }

    public void setLvAdapter(){
        if(adapter==null){
            adapter=new MyAdapter(this,newslist);
            pullToRefreshListView.setAdapter(adapter);
        }else {
            adapter.notifyDataSetChanged();
        }
    }

    private void initPlv() {
        //1.设置模式
        pullToRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);

        //2.设置头尾布局显示的文字
        ILoadingLayout startLabels = pullToRefreshListView.getLoadingLayoutProxy(true, false);
        startLabels.setPullLabel("下拉刷新");//第一次下拉时显示的文字
        startLabels.setRefreshingLabel("正在拉");//下拉的过程中显示的文字
        startLabels.setReleaseLabel("放开刷新");//不能在下拉时,显示的文字

        ILoadingLayout endLabels = pullToRefreshListView.getLoadingLayoutProxy(false, true);
        endLabels.setPullLabel("上拉刷新");
        endLabels.setRefreshingLabel("正在载入...");
        endLabels.setReleaseLabel("放开刷新...");

        //3.设置监听事件
        pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                //下拉刷新
                operType=1;
                pageIndex=1;
                url="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page="+pageIndex;
                requestNetData();

            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                //上拉加载
                operType=2;
                pageIndex++;
                url="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page="+pageIndex;
                requestNetData();
            }
        });

    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: