public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{
private XListView listView;
private int page=1;//从第一页开始加载;
private int pageSize=15;//每一页加载的数量
private Gson gson=new Gson();
private MyAdapter adapter;
private List<DataTotalBean.DataBean> value =new ArrayList<>();
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int what=msg.what;
if(what==1){
String[] datas=(String[])msg.obj;
if(datas!=null&&datas.length>1){
String result=datas[0];
String isadd=datas[1];
boolean isAdd=Boolean.parseBoolean(isadd);
DataTotalBean bean=gson.fromJson(result,DataTotalBean.class);
value=bean.getData();
System.out.println(result);
if(value!=null){
if(!isAdd){//更新数据
value.clear();
}
value.addAll(value);
System.out.println(value.size()+" &&&&&&&& "+result);
adapter.updateData(value);
//数据从网络取回成功,停止加载进度条;
listView.stopLoadMore();
listView.stopRefresh();
}
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(XListView)findViewById(R.id.mylist);
listView.setXListViewListener(this);
listView.setPullLoadEnable(true);
listView.setPullRefreshEnable(true);
adapter=new MyAdapter(MainActivity.this);
listView.setAdapter(adapter);
getDataFromHttp(false,"GET");
}
//从网络获取数据
private void getDataFromHttp(final boolean isadd , final String requestMethod){
new Thread(){
@Override
public void run() {
super.run();
try {
String path=" ";
//value feiqi
String value="key=59a7a07262e92d09a63ec1a23beb1a2c&area="+ URLEncoder.encode("北京","utf-8")+"&page="+page+"&pagesize="+pageSize;
if(requestMethod.equals("GET")){
path=path+"?"+value;
}
URL url=new URL(path);
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
//设置请求方式
connection.setRequestMethod(requestMethod);
if(requestMethod.equals("POST")){
connection.setDoOutput(true);
OutputStream os=connection.getOutputStream();
os.write(value.getBytes());
}
int code=connection.getResponseCode();
System.out.println(code+" ******************");
if(code==HttpURLConnection.HTTP_OK){
InputStream inputStream=connection.getInputStream();
String str="";
String result="";
BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
while((str=reader.readLine())!=null){
result+=str;
}
Message msg=Message.obtain();
msg.obj=new String[]{result,isadd+""};
msg.what=1;
handler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
@Override
public void onRefresh() {
page=1;
getDataFromHttp(false,"GET");
}
@Override
public void onLoadMore() {
page++;
getDataFromHttp(true,"GET");
}
}
适配器
public class MyAdapter extends BaseAdapter {
private List<DataTotalBean.DataBean> value = new ArrayList<>();
private Context context;
private ImageLoader loader;
private DisplayImageOptions options;
public MyAdapter(Context context) {
this.context = context;
loader=ImageLoader.getInstance();
ImageLoaderConfiguration configuration=ImageLoaderConfiguration.createDefault(context);
loader.init(configuration);
options=new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.displayer(new FadeInBitmapDisplayer(20))
.build();
}
//追加数据
public void addData(List<DataTotalBean.DataBean> value){
this.value.addAll(value);
notifyDataSetChanged();
}
public void updateData(List<DataTotalBean.DataBean> value){
this.value.clear();
addData(value);
}
@Override
public int getCount() {
return value.size();
}
@Override
public Object getItem(int position) {
return value.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
if (convertView == null) {
convertView = View.inflate(context, R.layout.item, null);
holder=new ViewHolder(convertView);
convertView.setTag(holder);
}else{
holder=(ViewHolder)convertView.getTag();
}
holder.item_name.setText(value.get(position).getSource_name());
holder.item_address.setText(value.get(position).getTitle());
List<DataTotalBean.DataBean.ImgUrlBean> imgs=value.get(position).getImg();
if(imgs!=null&&imgs.size()>0){
loader.displayImage(imgs.get(0).url,holder.item_img,options);
}
return convertView;
}
public static class ViewHolder {
public View rootView;
public ImageView item_img;
public TextView item_name;
public TextView item_address;
public ViewHolder(View rootView) {
this.rootView = rootView;
this.item_img = (ImageView) rootView.findViewById(R.id.item_img);
this.item_name = (TextView) rootView.findViewById(R.id.item_name);
this.item_address = (TextView) rootView.findViewById(R.id.item_address);
}
}
}