public class MainActivity extends Activity {
List<MyData> listall = new ArrayList<Bean.MyData>();
private ListView lv;
private ProgressBar pb1;
private int index = 1;
private ProgressBar pb2;
MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
pb1.setVisibility(pb1.VISIBLE);
// 获取网络数据
getSouse();
}
private void init() {
lv = (ListView) findViewById(R.id.lv);
lv.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE
&& lv.getLastVisiblePosition() == listall.size() - 1) {
index++;
getSouse();
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
});
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
MyData data = listall.get(position);
Intent intent=new Intent(MainActivity.this,Main2Activity.class);
intent.putExtra("url",data.url);
startActivity(intent);
}
});
pb1 = (ProgressBar) findViewById(R.id.pb1);
pb2 = (ProgressBar) findViewById(R.id.pb2);
}
// 获取网络资源
private void getSouse() {
AsyncTask<Void, Void, String> as = new AsyncTask<Void, Void, String>() {
@Override
protected void onPreExecute() {
// 显示进度条
pb2.setVisibility(pb2.VISIBLE);
super.onPreExecute();
}
@Override
protected void onPostExecute(String result) {
String json = result;
Gson gson = new Gson();
Bean bean = gson.fromJson(json, Bean.class);
List<MyData> list = bean.result.list;
System.out.println(list);
listall.addAll(list);
if (adapter == null) {
adapter = new MyAdapter(listall, MainActivity.this);
lv.setAdapter(adapter);
pb2.setVisibility(pb2.GONE);
pb1.setVisibility(pb1.GONE);
} else {
adapter.notifyDataSetChanged();
pb2.setVisibility(pb2.GONE);
}
super.onPostExecute(result);
}
@Override
protected String doInBackground(Void... params) {
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost(
"http://v.juhe.cn/weixin/query");
List<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>();
parameters.add(new BasicNameValuePair("key",
"07722feab9b1643834ae1ca387eea40b"));
parameters.add(new BasicNameValuePair("pno", index + ""));
HttpEntity entity = new UrlEncodedFormEntity(parameters,
"utf-8");
post.setEntity(entity);
HttpResponse response = httpClient.execute(post);
if (response.getStatusLine().getStatusCode() == 200) {
InputStream is = response.getEntity().getContent();
ByteArrayOutputStream os = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int len = 0;
while ((len = is.read(b)) != -1) {
os.write(b, 0, len);
}
String str = os.toString("utf-8");
return str;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
};
// 执行
as.execute();
}
}
适配器
public class MyAdapter extends BaseAdapter {
private List<MyData> list;
private Context context;
public MyAdapter(List<MyData> list, Context context) {
super();
this.list = list;
this.context = context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
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) {
MyData data = list.get(position);
ViewHolder vh;
if (convertView==null) {
vh=new ViewHolder();
convertView=View.inflate(context,R.layout.item,null);
vh.image=(ImageView) convertView.findViewById(R.id.image);
vh.tv1=(TextView) convertView.findViewById(R.id.tv1);
vh.tv2=(TextView) convertView.findViewById(R.id.tv2);
convertView.setTag(vh);
}
else{
vh=(ViewHolder) convertView.getTag();
}
BitmapUtils utils=new BitmapUtils(context);
utils.display(vh.image,data.firstImg);
vh.tv1.setText(data.title);
vh.tv2.setText(data.source);
return convertView;
}
class ViewHolder {
ImageView image;
TextView tv1;
TextView tv2;
}
}