注意:此Demo用的是第三方的Xlistview.jar,需要复制me文件夹到项目中,两个XML布局文件和一张图片

把下面的复制到String中

<string name="xlistview_header_hint_normal">下拉刷新</string>
    <string name="xlistview_header_hint_ready">松开刷新数据</string>
    <string name="xlistview_header_hint_loading">正在加载...</string>
    <string name="xlistview_header_last_time">上次更新时间:</string>
    <string name="xlistview_footer_hint_normal">查看更多</string>
    <string name="xlistview_footer_hint_ready">松开载入更多</string>

还要注意:用到了网络,所以需要加网络权限

//----------------主布局文件----------------------------------------

<me.XListView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/lv"></me.XListView>

//----======================--------------主Activity-----====================-------------------

package com.bwie.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import me.XListView;
import me.XListView.IXListViewListener;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.bwie.test.JingDian.ResultBean;
import com.bwie.test.JingDian.ResultBean.RowsBean;
import com.bwie.test.JingDian.ResultBean.RowsBean.InfoBean;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity implements IXListViewListener{
    private String urlPath="http://api.fang.anjuke.com/m/android/1.3/shouye/recInfosV3/?city_id=14&lat=40.04652&lng=116.306033&api_key=androidkey&sig=9317e9634b5fbc16078ab07abb6661c5&macid=45cd2478331b184ff0e15f29aaa89e3e&app=a-ajk&_pid=11738&o=PE-TL10-user+4.4.2+HuaweiPE-TL10+CHNC00B260+ota-rel-keys%2Crelease-keys&from=mobile&m=Android-PE-TL10&cv=9.5.1&cid=14&i=864601026706713&v=4.4.2&qtime=20160411091603&pm=b61&uuid=1848c59c-185d-48d9-b0e9-782016041109&_chat_id=";
    private List<RowsBean> rowsBeans=new ArrayList<JingDian.ResultBean.RowsBean>();
    
    private XListView lv;
    private TextView tv_jia;
    private MyAdapter adapter;
    
    //定义一个页数
    private int ye=0;
    private int STATE_1 = 1;
    private int STATE_2 = 2;
    private int STATE_3;
    //定义一个集合用于刷新数据
    private List<RowsBean> list;
    
    private Handler handler=new Handler(){
        public void handleMessage(Message msg) {
            switch (msg.what) {
            case 0:
                //获得数据
                String text=(String) msg.obj;
                tojson(text);
                break;
              
            default:
                break;
            }
        }

        
    };
    
    
    //解析数据
    private void tojson(String text) {
          //判断,如果有数据先清空----如果让他显示上一页的数据就不用清空集合
        if (STATE_3 == STATE_1) {
            list .clear();
        }
        Gson gson=new Gson();
        //类名
        JingDian jingDian=gson.fromJson(text, JingDian.class);
        
        ResultBean resultBean=jingDian.getResult();
        //添加
        rowsBeans=resultBean.getRows();
        //全部添加到集合
        list.addAll(rowsBeans);
        
        //更新适配器
        if (adapter == null) {
               adapter = new MyAdapter(list,this);
               lv.setAdapter(adapter);
           } else {
               adapter .notifyDataSetChanged();
           }
        //加载数据
           load();
        
        
                   
        
    };

    private void load() {
         //停止更新
        lv.stopRefresh();
        //加载更多
        lv.stopLoadMore();
        //更新时间
        lv.setRefreshTime("刚刚");
        
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到控件
        lv = (XListView) findViewById(R.id.lv);
        tv_jia = (TextView) findViewById(R.id.tv_jia);
        //创建集合
        list = new ArrayList<JingDian.ResultBean.RowsBean>();
       
        lv.setPullLoadEnable(true);
         //获得数据
            huodeshuju(ye);

//设置xListview的监听
        lv.setXListViewListener(this);
    }

  //---------------------------------  

    //获得数据
    private void huodeshuju(final int ye) {
        //使用线程

        new Thread(){
                    public void run() {
                        try {
                            //先创建出了一个URL对象,urlPath:是我们访问接口地址
                            URL url=new URL("http://api.fang.anjuke.com/m/android/1.3/shouye/recInfosV3/?city_id=14&lat=40.04652&lng=116.306033&api_key=androidkey&sig=9317e9634b5fbc16078ab07abb6661c5&macid=45cd2478331b184ff0e15f29aaa89e3e&app=a-ajk&_pid=11738&o=PE-TL10-user+4.4.2+HuaweiPE-TL10+CHNC00B260+ota-rel-keys%2Crelease-keys&from=mobile&m=Android-PE-TL10&cv=9.5.1&cid=14&i=864601026706713&v=4.4.2&qtime=20160411091603&pm=b61&uuid=1848c59c-185d-48d9-b0e9-782016041109&_chat_id="+ye);
                            
                             //URL链接对象,通过URL对象打开一个connection链接对像
                            HttpURLConnection urlConnection=(HttpURLConnection) url.openConnection();
                            //设置urlConnection对象链接超时
                            urlConnection.setConnectTimeout(5000);
                            //设置urlConnection对象获取数据超时
                            urlConnection.setReadTimeout(5000);
                            //设置本次urlConnection请求方式
                            urlConnection.setRequestMethod("GET");
                            //调用urlConnection的链接方法,线程等待,等待的是服务器所给我们返回的结果集
                           // urlConnection.connect();
                            //获取本次网络请求的状态码
                            int code=urlConnection.getResponseCode();
                            //如果本次返回的状态吗是200(成功)
                            if (code==200) {
                                 //调用urlConnection.getInputStream得到本次请求所返回的结果流
                                InputStream inputStream=urlConnection.getInputStream();
                                //创建一个BufferedReader,去读取结果流
                                BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
                                String readLine;
                                StringBuffer buffer=new StringBuffer();
                                while ((readLine=reader.readLine())!=null) {
                                    buffer.append(readLine);
                                    
                                }
                                //读取完结果流之后所得到的结果
                                String result=buffer.toString();
                               Log.i("数据:----", ye+":"+result);
                                Message message=new Message();
                                message.what=0;
                                message.obj=result;
                                handler.sendMessage(message);
                                inputStream.close();
                            }
                        } catch (MalformedURLException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        
                    };
                }.start();
        
    }

    

    @Override
    public void onRefresh() {
          STATE_3 = STATE_1;//设置判断
            //获得网络数据        
             //下拉刷新时,将页数在设为1,从第一页开始
             list.clear();
             ye=0;
             huodeshuju(ye);    
             
        
    }

    @Override
    public void onLoadMore() {
        STATE_3 = STATE_2;
        //每一次上拉,让页数加1
        ye++;
        Log.i("页", ye+"");
        //获得网络数据
        huodeshuju(ye);
       
        Log.i("页222", ye+"");
        
    }
    
}

第三方 XListview 上拉加载、下拉刷新、分页加载和Gson解析的更多相关文章

  1. APICloud上啦加载下拉刷新模块

    apicloud有自带的上啦加载下拉刷新,当让也可以用第三方或者在模块库里面找一个使用 一.下拉刷新,一下代码写在 apiready = function (){} 里面 apiready = fun ...

  2. Vue mint ui用在消息页面上拉加载下拉刷新loadmore 标记

    之前总结过一个页面存在多个下拉加载的处理方式,今天再来说一下在消息页面的上拉加载和下拉刷新,基本上每个app都会有消息页面,会遇到这个需求 需求:每次加载十条数据,上拉加载下拉刷新,并且没有点击查看过 ...

  3. 上拉加载下拉刷新控件WaterRefreshLoadMoreView

    上拉加载下拉刷新控件WaterRefreshLoadMoreView 效果: 源码: // // SRSlimeView // @author SR // Modified by JunHan on ...

  4. RecyclerView 上拉加载下拉刷新

    RecyclerView 上拉加载下拉刷新 <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/teach_s ...

  5. 微信小程序上拉加载下拉刷新

    微信小程序实现上拉加载下拉刷新 使用小程序默认提供方法. (1). 在xxx.json 中开启下拉刷新,需要设置backgroundColor,或者是backgroundTextStyle ,因为加载 ...

  6. mui scroll和上拉加载/下拉刷新

    mui中 scroll和上拉加载/下拉刷新同时存在会出现两个滚动条 把/*   */ /* //mui页面鼠标拖动代码: mui('.mui-scroll-wrapper').scroll({ dec ...

  7. 仿UC天气下拉和微信下拉眼睛头部淡入淡出--第三方开源--PullLayout

    Android-PullLayout是github上的一个第三方开源项目,该项目主页是:https://github.com/BlueMor/Android-PullLayout 原作者项目意图实现类 ...

  8. 【Arduino学习笔记06】上拉电阻和下拉电阻

    为什么要用上拉电阻和下拉电阻?--避免输入引脚处于"悬空"状态 下图是一个没有使用上拉电阻/下拉电阻的电路图: 在按键没有按下时,要读取的输入引脚没有连接到任何东西,这种状态就称为 ...

  9. 类似UC天气下拉和微信下拉眼睛头部弹入淡出UI交互效果(开源项目)。

    Android-PullLayout是github上的一个第三方开源项目,该项目主页是:https://github.com/BlueMor/Android-PullLayout  原作者项目意图实现 ...

  10. jqgrid 表格中筛选条件的多选下拉,树形下拉 ;文本框清除插件;高级查询多条件动态筛选插件[自主开发]

    /** * @@desc 文本框清除按钮,如果isAutoWrap为false当前文本框父级必须是relative定位,boostrap参考input-group * @@author Bear.Ti ...

随机推荐

  1. [ An Ac a Day ^_^ ] HihoCoder 1249 Xiongnu's Land 线性扫描

    拿到了icpc北京站的参赛名额 感谢亮哥~ 虽然是地狱之战 但也要全力以赴! 题意: 有一片沙漠 n片绿洲 让你用一条线分成两部分 左≥右 而且分割线要尽量靠右 问线的位置 思路: 网上说可以二分 没 ...

  2. FZU 1920 Left Mouse Button 简单搜索

    题意就是扫雷 问最少多少次可以把图点开…… 思路也很明显 就是先把所有的标记一遍 就当所有的都要点…… 录入图…… 所有雷都不标记…… 之后呢 遍历图…… 然后碰到0就搜索一圈 碰到数字就标记…… 不 ...

  3. 工作中用到的简单linux命令

    1.rpm包查询.卸载.安装: rpm包查询 rpm -q 包名(不带版本号.后缀等)  q----query rpm包卸载 rpm -e 包名(不带版本号.后缀等)e----erase rpm包安装 ...

  4. asp 操作 json

    <% Dim sc4Json Sub InitScriptControl Set sc4Json =Server.CreateObject("MSScriptControl.Scrip ...

  5. 2.Add Two Numbers-两个单链表相加

    You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...

  6. php 验证码类

    <?php  class Vcode {   private $width; //宽   private $height; //高   private $num;  //数量   private ...

  7. java 图片高保真缩放

    public class NarrowImage { /**     * @param im     *            原始图像     * @param resizeTimes     *  ...

  8. HDU 5811 Colosseo

    首先判断一下两个集合是否能够拓扑排序,顺便记录下每个节点的拓扑序. 然后看T2中每个点在T1中能够放在哪一个位置,记录下这个位置Pi. 然后T2中(按拓扑序排好),计算Pi的一个非严格递增的LIS.L ...

  9. SPOJ 705 New Distinct Substrings

    后缀数组.按照排序完的后缀一个一个统计.每一个后缀对答案做出的贡献为:n-SA[i]-height[i]. #pragma comment(linker, "/STACK:102400000 ...

  10. VBS基础篇 - 对象(7) - TextStream对象

    VBS基础篇 - 对象(7) - TextStream对象   TextStream对象是用于访问文本文件的对象,它是FileSystemObject一个独立的附属对象,但在使用TextStream对 ...