//---------------主布局文件----------------------------
<ListView android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/lv"></ListView>
//---------------主Activity------------------------------
package com.example.listviewscroll;
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 com.example.listviewscroll.JingDian.ResultBean;
import com.example.listviewscroll.JingDian.ResultBean.RowsBean;
import com.google.gson.Gson;
import android.os.AsyncTask;
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.view.View.OnClickListener;
import android.widget.AbsListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;
public class MainActivity extends Activity {
private ListView lv;
private List<RowsBean> rowsBeans = new ArrayList<JingDian.ResultBean.RowsBean>();
private MyAdapter adapter;
private List<RowsBean> list;
// 定義一個頁數
private int ye = 0;
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;
}
}
};
//----------注意:使用了Gson.jar包-解析json串---------
// 解析數據
private void tojson(String text) {
Gson gson = new Gson();
// 類名
JingDian jingDian = gson.fromJson(text, JingDian.class);
ResultBean resultBean = jingDian.getResult();
// 添加
rowsBeans = resultBean.getRows();
Log.i("11111111111", rowsBeans.toString());
list.addAll(rowsBeans);
//更新適配器
if (adapter == null) {
adapter = new MyAdapter(list,this);
lv.setAdapter(adapter);
} else {
adapter.notifyDataSetChanged();
}
};
//------------------onCreate中------------------
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到控件Listview
lv = (ListView) findViewById(R.id.lv);
list=new ArrayList<JingDian.ResultBean.RowsBean>();
//獲得網絡數據
huodeshuju(ye);
//設置Listview的滑動監聽
lv.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
//滾動結束
case OnScrollListener.SCROLL_STATE_IDLE:
//滾動停止時,判斷如果滾動到底部
if (view.getLastVisiblePosition()==view.getCount()-1) {
// 使頁數加1
ye++;
Toast.makeText(MainActivity.this, "" + ye, Toast.LENGTH_SHORT).show();
huodeshuju(ye);
adapter.notifyDataSetChanged();
}else if (view.getFirstVisiblePosition()==0) {
//滾動到頂部
// 重新定義為第一頁
list.clear();
ye = 1;
Toast.makeText(MainActivity.this, "" + ye, Toast.LENGTH_SHORT).show();
// 獲得數據
huodeshuju(ye);
// 刷新適配器
adapter.notifyDataSetChanged();
}
break;
//開始滾動
case OnScrollListener.SCROLL_STATE_FLING:
break;
//正在滾動
case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
break;
default:
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
}
});
}
// 獲得數據
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");
// 獲取本次網絡請求的狀態碼
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);
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
}