public class MainActivity extends Activity implements OnClickListener{
private ListView lv;
private MyAsynTask task;
private HttpURLConnection connection;
private ArrayList<Data_pinge>list=new ArrayList<Data_pinge>( );
private User u;
private boolean flg = true;//判断页面个数
private Myadapter myadapter;
private Button load;
private int pagecur=1;//定义网址页数变量
private BitmapUtils bitmapUtils;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView) findViewById(R.id.lv);
load=(Button) findViewById(R.id.button1);
//实现滑动效果家加载数据
lv.setOnScrollListener(new OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
switch (scrollState) {
case SCROLL_STATE_FLING://快速滑动
break;
case SCROLL_STATE_IDLE://静止不动
//返回显示在屏幕上的最后一个元素在适配器中所处的位置。 返回值 在适配器数据集中 的位置。
if(lv.getLastVisiblePosition()==(list.size()-1)){
Toast.makeText(MainActivity.this,"正在加载数据" , 0).show();
gData();
}
break;
case SCROLL_STATE_TOUCH_SCROLL://手指点击屏幕
break;
default:
break;
}
}
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
});
Myadapter myadapter=new Myadapter();
lv.setAdapter(myadapter);
gData();
}
private void gData() {
// TODO Auto-generated method stub
task=new MyAsynTask();
try {
//得到通过网络请求等到的Json字符串
String str=task.execute("http://www.iginwa.com/mobile/index.php?act=pinge&page=5&curpage="+pagecur).get();
Gson gson=new Gson();
pagecur=pagecur+1;//数据增加一条就刷新
User u=gson.fromJson(str, User.class);
// list=u.getDatas().getPinge_list();
//System.out.println(ping_list.toString());
//如果请求的数据大于5条,把数据添加到集合里,刷新适配器
if(u.getDatas().getPinge_list().size()>=5){
list.addAll(u.getDatas().getPinge_list());
//myadapter.notifyDataSetChanged();//刷新数据
}else{
//如果请求的数据小于5条,添加到集合里,刷新适配器,给flg从新赋值,并且不进行添加数据
if(flg){
list.addAll(u.getDatas().getPinge_list());
myadapter.notifyDataSetChanged();
//flg=false;
}else{
Toast.makeText(MainActivity.this, "没有更多数据了...", 1000).show();
}
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
class Myadapter extends BaseAdapter{
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHoder h=null;
if(convertView==null){
h=new ViewHoder();
convertView=LayoutInflater.from(MainActivity.this).inflate(R.layout.item, null);
h.tv1=(TextView) convertView.findViewById(R.id.textView1);
h.tv2=(TextView) convertView.findViewById(R.id.textView2);
h.image =(ImageView) convertView.findViewById(R.id.imageView1);
convertView.setTag(h);
}else{
h=(ViewHoder) convertView.getTag();
}
h.tv1.setText("标题:"+ list.get(position).getPinge_title());
h.tv2.setText("新闻"+list.get(position).getPinge_desc());
BitmapUtils bitmap=new BitmapUtils(MainActivity.this);
bitmap.display(h.image, list.get(position).getPinge_pic());
return convertView;
}
class ViewHoder{
TextView tv1,tv2;
ImageView image;
}
}
//控件加载
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
gData();
break;
}
}
}
异步任务网络请求:
package com.example.url;
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 android.os.AsyncTask;
import android.text.NoCopySpan.Concrete;
import android.util.Log;
public class MyAsynTask extends AsyncTask<String, Integer, String>{
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
StringBuffer buffer=null;
try {
URL url=new URL(params[0]);
//网络请求
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
connection.setConnectTimeout(10*1000);
if(connection.getResponseCode()==200){
//得到输入流
InputStream stream=connection.getInputStream();
//字节流转化成字符流,在缓冲区读取
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(stream));
String str="";
buffer=new StringBuffer();
while ((str=bufferedReader.readLine() )!=null) {
buffer.append(str);
Log.e("TAG", "返回数据"+str);
}
}else{
Log.e("TAG", "请求失败");
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return buffer.toString();
}
}