asf

package com.bwei.test;

import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;
import com.example.vo.Bean;
import com.example.vo.Bean.Item;
import com.example.xmlandjsonpull.R;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import com.thoughtworks.xstream.XStream;

public class MainActivity extends Activity {

    private LocationClient mLocationClient = null;
    
    private BDLocationListener myListener = new MyLocationListener();

    private String url = "http://apis.juhe.cn/goodbook/catalog?key=9d6ef8c31647a206e05fcaff70527182&dtype=xml";

    private long firstTime = 0;

    private ListView lv;

    private List<Item> list;
    
    private ArrayAdapter arrayAdapter;
    
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (ListView) findViewById(R.id.lv);
        tv = (TextView) findViewById(R.id.tv);
        // LocationClient类是定位SDK的核心类
        mLocationClient = new LocationClient(getApplicationContext()); // 声明LocationClient类
        mLocationClient.registerLocationListener(myListener); // 注册监听函数
        XUtils();
        initLocation();
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(MainActivity.this,
                        ItemActivity.class);
                intent.putExtra("lv", list.get(position));
                startActivity(intent);
            }
        });
    }

    private void XUtils() {
        // TODO Auto-generated method stub
        HttpUtils httpUtils = new HttpUtils();
        httpUtils.send(HttpMethod.GET, url, new RequestCallBack<String>() {

            @Override
            public void onFailure(HttpException arg0, String arg1) {
                // TODO Auto-generated method stub

            }

            @SuppressWarnings("unchecked")
            @Override
            public void onSuccess(ResponseInfo<String> arg0) {
                // TODO Auto-generated method stub
                XStream xStream = new XStream();
                xStream.processAnnotations(Bean.class);
                Bean bean = (Bean) xStream.fromXML(arg0.result);
                list = bean.result.item;
                arrayAdapter = new ArrayAdapter(MainActivity.this,
                        android.R.layout.simple_list_item_1, list);
                lv.setAdapter(arrayAdapter);
            }
        });
    }
    
    private void initLocation() {
        LocationClientOption option = new LocationClientOption();
        option.setLocationMode(LocationMode.Hight_Accuracy);// 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
        option.setCoorType("bd09ll");// 可选,默认gcj02,设置返回的定位结果坐标系
        int span = 1000;
        option.setScanSpan(span);// 可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
        option.setIsNeedAddress(true);// 可选,设置是否需要地址信息,默认不需要
        option.setOpenGps(true);// 可选,默认false,设置是否使用gps
        option.setLocationNotify(true);// 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
        option.setIsNeedLocationDescribe(true);// 可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
        option.setIsNeedLocationPoiList(true);// 可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
        option.setIgnoreKillProcess(false);// 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
        option.SetIgnoreCacheException(false);// 可选,默认false,设置是否收集CRASH信息,默认收集
        option.setEnableSimulateGps(false);// 可选,默认false,设置是否需要过滤gps仿真结果,默认需要
        mLocationClient.setLocOption(option);
        mLocationClient.start();
    }
    
    public class MyLocationListener implements BDLocationListener {
        @Override
        public void onReceiveLocation(BDLocation location) {
            String city = location.getCity();
            String street = location.getStreet();
            tv.setText("定位城市:" + city + "," + street);
        }
    }

    // 监听back按键,实现连续按两次退出功能
    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        switch (keyCode) {
        case KeyEvent.KEYCODE_BACK:
            long secondTime = System.currentTimeMillis();
            if (secondTime - firstTime > 2000) { // 如果两次按键时间间隔大于2秒,则不退出
                Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
                firstTime = secondTime;// 更新firstTime
                return true;
            } else { // 两次按键小于2秒时,退出应用
                System.exit(0);
            }
            break;
        }
        return super.onKeyUp(keyCode, event);
    }

}



 


    <!-- 这个权限用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
    </uses-permission>
    <!-- 这个权限用于访问GPS定位 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
    </uses-permission>
    <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
    </uses-permission>
    <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
    </uses-permission>
    <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
    </uses-permission>
    <!-- 用于读取手机当前的状态 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" >
    </uses-permission>
    <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
    </uses-permission>
    <!-- 访问网络,网络定位需要上网 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- SD卡读取权限,用户写入离线定位数据 -->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" >
    </uses-permission>
   

 

<meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="hdK3IkF0igS2nQnCIV8MKjRWVnnzyg3A" />

        <service
            android:name="com.baidu.location.f"
            android:enabled="true"
            android:process=":remote" >
        </service>

 

vo包

package com.example.vo;

import java.io.Serializable;
import java.util.List;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

@XStreamAlias("root")
public class Bean implements Serializable {

    public String resultcode;
    public String reason;
    public String error_code;
    public Result result;

    @XStreamAlias("result")
    public class Result implements Serializable {
        @XStreamImplicit(itemFieldName = "item")
        public List<Item> item;
    }

    public class Item implements Serializable {
        public String id;
        public String catalog;

        @Override
        public String toString() {
            return  catalog;
        }

    }

}

 

 

package com.bwei.test;

import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.text.format.DateUtils;
import android.util.Log;
import android.widget.GridView;
import android.widget.Toast;

import com.bwei.adapter.MyAdapter;
import com.example.vo.All;
import com.example.vo.Bean.Item;
import com.example.vo.Data;
import com.example.xmlandjsonpull.R;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnLastItemVisibleListener;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
import com.handmark.pulltorefresh.library.PullToRefreshGridView;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;

public class ItemActivity extends Activity {

    private String id;
    private int index = 0;

    private Item item;
    private List<Data> data;
    private List<Data> datas;
    private MyAdapter adapter;
    private String str;
    private Handler handler;
    private PullToRefreshGridView mPullRefreshGridView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_item);
        mPullRefreshGridView = (PullToRefreshGridView) findViewById(R.id.pull_refresh_grid);
        handler = new Handler();
        Intent intent = getIntent();
        item = (Item) intent.getSerializableExtra("lv");
        id = item.id;
        XUtils();
        /*mPullRefreshGridView
                .setOnRefreshListener(new OnRefreshListener2<GridView>() {

                    @Override
                    public void onPullDownToRefresh(
                            PullToRefreshBase<GridView> refreshView) {
                        // TODO Auto-generated method stub
                        handler.postDelayed(new Runnable() {

                            @Override
                            public void run() {
                                // TODO Auto-generated method stub
                                XUtils();
                                onLoad();
                                // 必须关闭
                                mPullRefreshGridView.onRefreshComplete();
                            }
                        }, 2000);
                    }

                    @Override
                    public void onPullUpToRefresh(
                            PullToRefreshBase<GridView> refreshView) {
                        // TODO Auto-generated method stub
                        handler.postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                // TODO Auto-generated method stub
                                index = index + 12;
                                String str = "http://apis.juhe.cn/goodbook/query?key=9d6ef8c31647a206e05fcaff70527182&catalog_id="
                                        + id + "&rn=12&pn=" + index;
                                getdataflush(str);
                                adapter.notifyDataSetChanged();
                                onLoad();
                                mPullRefreshGridView.onRefreshComplete();
                            }
                        }, 2000);
                    }
                });*/
        
        mPullRefreshGridView.setOnRefreshListener(new OnRefreshListener<GridView>() {

            @Override
            public void onRefresh(PullToRefreshBase<GridView> refreshView) {
                
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        XUtils();//调用联网方法
                        onLoad();
                    }
                }, 2000);
                
            }
        });

         //5.设置上拉加载处理
        mPullRefreshGridView.setOnLastItemVisibleListener(new OnLastItemVisibleListener() {
        @Override
        public void onLastItemVisible() {
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    getdataflush();//调用联网方法
                    onLoad();
                }
            }, 2000);
            
           Toast.makeText(ItemActivity.this, "正在加载", 1).show();
        }
     });
    }

    private void XUtils() {
        // TODO Auto-generated method stub
        String url = "http://apis.juhe.cn/goodbook/query?key=9d6ef8c31647a206e05fcaff70527182&catalog_id="
                + id + "&rn=20&pn=" + index;
        HttpUtils httpUtils = new HttpUtils();
        httpUtils.send(HttpMethod.GET, url, new RequestCallBack<String>() {
            
            @Override
            public void onFailure(HttpException arg0, String arg1) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onSuccess(ResponseInfo<String> arg0) {
                // TODO Auto-generated method stub
                Gson gson = new Gson();
                All all = gson.fromJson(arg0.result, All.class);
                datas = all.getResult().getData();
                adapter = new MyAdapter(ItemActivity.this, datas);
                mPullRefreshGridView.setAdapter(adapter);
                index= index+1;
                mPullRefreshGridView.onRefreshComplete();
            }
        });
    }

    private void getdataflush() {
        // TODO Auto-generated method stub
        String url = "http://apis.juhe.cn/goodbook/query?key=9d6ef8c31647a206e05fcaff70527182&catalog_id="
                + id + "&rn=20&pn=" + index;
        HttpUtils httpUtils = new HttpUtils();
        httpUtils.send(HttpMethod.GET, url, new RequestCallBack<String>() {

            @Override
            public void onFailure(HttpException arg0, String arg1) {
                // TODO Auto-generated method stub
            }

            @Override
            public void onSuccess(ResponseInfo<String> arg0) {
                // TODO Auto-generated method stub
                Gson gson = new Gson();
                All all = gson.fromJson(arg0.result, All.class);
                List<Data> d = all.getResult().getData();
                datas.addAll(d);
                index= index+1;
                mPullRefreshGridView.onRefreshComplete();
                adapter.notifyDataSetChanged();
            }
        });
    }

    /**
     * 设置时间
     */
    private void onLoad() {
        String label = DateUtils.formatDateTime(getApplicationContext(),
                System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME
                        | DateUtils.FORMAT_SHOW_DATE
                        | DateUtils.FORMAT_ABBREV_ALL);

        // Update the LastUpdatedLabel
        mPullRefreshGridView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
    }
}

 

posted @ 2016-05-02 19:01  看淡Ren生  阅读(250)  评论(0编辑  收藏  举报