上拉刷新下拉加载(多条目)

package com.bwie.xlistviewdemo1;


import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;


import com.bwie.adapters.MyBaseAdapter;
import com.bwie.beans.News;
import com.bwie.beans.SuperClass;
import com.google.gson.Gson;


import java.util.ArrayList;


public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{
    private XListView xListView;
    private ArrayList<News> newslist;
    private MyBaseAdapter myAdapter;
    private final static  String JSON_URL = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        xListView = (XListView) findViewById(R.id.xlv);
        xListView.setPullLoadEnable(true);//设置可以刷新和加载
        xListView.setXListViewListener(this);
        //刚进来,加载第一版数据
        new AsyncTask<String,Integer,String>(){
            @Override
            protected String doInBackground(String... params) {
                //线程加载数据
                String str = new NetWorkUtils().getJsonByUrlConnection(JSON_URL);


                return str;
            }


            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                SuperClass superClass = new Gson().fromJson(s,SuperClass.class);
                newslist = superClass.getNewslist();//得到第一页数据
                myAdapter = new MyBaseAdapter(newslist, MainActivity.this);
                xListView.setAdapter(myAdapter);


            }
        }.execute();


    }


    /**
     * 停止刷新或加载时
     */
    public void onLoad(){
        xListView.stopRefresh();
        xListView.stopLoadMore();
        xListView.setRefreshTime("刚刚");
    }


    /**
     * 下拉会回调此方法,在次方法中写刷新的代码
     */
    @Override
    public void onRefresh() {
        Toast.makeText(this,"刷新",Toast.LENGTH_SHORT).show();


        new AsyncTask<String,Integer,String>(){
            @Override
            protected String doInBackground(String... params) {
                //线程加载数据
                String str = new NetWorkUtils().getJsonByUrlConnection(JSON_URL);


                return str;
            }


            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                SuperClass superClass = new Gson().fromJson(s,SuperClass.class);
                newslist = superClass.getNewslist();//得到第一页数据
                myAdapter = new MyBaseAdapter(newslist, MainActivity.this);
                xListView.setAdapter(myAdapter);
                onLoad();
            }
        }.execute();


    }


    /**
     * 上拉到listview的最后一条显示出来,然后会调用此方法,在此方法中加载下一页数据
     */
    @Override
    public void onLoadMore() {
        new AsyncTask<String,Integer,String>(){
            @Override
            protected String doInBackground(String... params) {
                //线程加载数据
                String str = new NetWorkUtils().getJsonByUrlConnection(JSON_URL);


                return str;
            }


            @Override 
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                SuperClass superClass = new Gson().fromJson(s,SuperClass.class);
                ArrayList<News> newData = superClass.getNewslist();//得到下一页数据(比如2,3,4.。。)
                newslist.addAll(newData);//把新的一页的数据集合,加到总的数据集合
                myAdapter.notifyDataSetChanged();//刷新适配器,展示全部数据
                onLoad();
            }
        }.execute();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值