MainActivity中Xlistview实现下拉刷新和上拉加载

本文介绍了一个基于Android的应用中如何实现列表数据的分页加载、下拉刷新及上拉加载功能。通过使用XListView和异步任务MyAsyncTask,文章详细展示了如何从服务器获取数据并更新UI的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.example.zhangjinling20170911;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.google.gson.Gson;

import view.XListView;
import view.XListView.IXListViewListener;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;

public class MainActivity extends Activity implements IXListViewListener{
     public static final String   TAG="MainActivity";
        int pageSize=3;
        int page=1;
        private List<Bean.DataBean> alllist = new ArrayList<Bean.DataBean>();

        Bean datas;
        List<Bean.DataBean> mlist;
        XListView mxl;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          String  mpath="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize="+pageSize+"&"+"page="+page;
            MyAsyncTask myAsyncTask = new MyAsyncTask(mpath);
            myAsyncTask.execute();
            //初始化组件
            mxl= (XListView) findViewById(R.id.xl);
            mxl.setPullLoadEnable(true);
            mxl.setPullRefreshEnable(true);
            mxl.setXListViewListener(this);
        }
        //下拉刷新
        @Override
        public void onRefresh() {
            Log.i(TAG, "onRefresh: ");
            page++;
            //加载刷新数据
            String  mpath="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize="+pageSize+"&"+"page="+page;
            MyAsyncTask  mMyasync=new MyAsyncTask(mpath);
            mMyasync.execute();
            onLoad();
        }
        //上拉加载
        @Override
        public void onLoadMore() {
            Log.i(TAG, "onLoadMore: ");
            page++;
            //加载刷新数据
            String  mpath="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize="+pageSize+"&"+"page="+page;
            MyAsyncTask  mMyasync=new MyAsyncTask(mpath);
            mMyasync.execute();
            onLoad();

        }
        private void onLoad() {
            // TODO Auto-generated method stub
            //停止刷新
            mxl.stopRefresh();
            //停止加载更多
            mxl.stopLoadMore();
            // 设置日期格式
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            // 获取当前系统时间
            String nowTime = df.format(new Date(System.currentTimeMillis()));
            // 释放时提示正在刷新时的当前时间
            mxl.setRefreshTime(nowTime);
        }


        class   MyAsyncTask extends AsyncTask{
            String mpath;
            public MyAsyncTask(String mpath) {
                super();
                this.mpath=mpath;
            }

            @Override
            protected Object doInBackground(Object[] objects) {
                Https  mHttps=new Https();
                String    json= mHttps.getJsonByInternet(mpath);
                Log.i("MainActivity", "onCreate: "+json.toString());
                Gson  mgjson=new Gson();
                datas= mgjson.fromJson(json,Bean.class);
                mlist= datas.getData();
                return null;
            }

            @Override
            protected void onPostExecute(Object o) {
                super.onPostExecute(o);
                //初始化适配器
                alllist.addAll(mlist);
                MyAdapter  myadapter=new MyAdapter(alllist,MainActivity.this);
                mxl.setAdapter(myadapter);
                myadapter.notifyDataSetChanged();

            }

        }



    

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值