1. 程式人生 > >Android上拉載入下拉重新整理(使用第三方類庫實現的)

Android上拉載入下拉重新整理(使用第三方類庫實現的)

package com.example.android_pullxml;


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


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


import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.GridView;


import com.example.android_pullxml.adapter.MyListAdapter;
import com.example.android_pullxml.bean.HttpUtils;
import com.example.android_pullxml.bean.MyData.Datas;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
import com.handmark.pulltorefresh.library.PullToRefreshGridView;


public class TwoActivity extends Activity {
private PullToRefreshGridView gv;
private Handler handler = new Handler() {


@Override
public void handleMessage(Message msg) {
List<Datas> list1 = (List<Datas>) msg.obj;
if (msg.what == 0) {
for (Datas data : list1) {
listSum.add(0, data);
}
} else {
for (Datas data : list1) {
listSum.add(list1.size(), data);
}
}
adapter.notifyDataSetChanged();
gv.onRefreshComplete();
}


};
private MyListAdapter adapter;
private List<Datas> list;
private ArrayList<Datas> listSum;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
//
listSum = new ArrayList<Datas>();
gv = (PullToRefreshGridView) findViewById(R.id.ptrg);
gv.setMode(Mode.BOTH);
initData(0);
if (listSum != null) {


adapter = new MyListAdapter(TwoActivity.this, listSum);
gv.setAdapter(adapter);
}
gv.setOnRefreshListener(new OnRefreshListener2<GridView>() {


@Override
public void onPullDownToRefresh(
PullToRefreshBase<GridView> refreshView) {
initData(0);
}


@Override
public void onPullUpToRefresh(
PullToRefreshBase<GridView> refreshView) {
initData(1);
}
});
}


/**
* isflag為0時則讓他下拉重新整理,為1時則讓他上拉載入
* */
private void initData(final int isflag) {


new Thread() {


@Override
public void run() {
super.run();
String json = HttpUtils
.getJson("http://apis.juhe.cn/goodbook/query?key=bfd6d2b411ee7f32b8c7b04a30901220&catalog_id="
+ getIntent().getStringExtra("catalog_id")
+ "&rn=10");
try {
JSONObject obj = new JSONObject(json);
JSONObject object = obj.getJSONObject("result");


JSONArray array = object.getJSONArray("data");
Gson gs = new Gson();
list = gs.fromJson(array.toString(),
new TypeToken<List<Datas>>() {
}.getType());
Message msg = Message.obtain();
msg.obj = list;
msg.what = isflag;
handler.sendMessage(msg);
} catch (JSONException e) {
e.printStackTrace();
}


}


}.start();
}
}