//定义变量
private static final int INIT = 1;
// 下拉刷新
public static final int REFRESH = 2;
// 上拉加载更多
public static final int LOADMORE = 3;
String path = "http://ic.snssdk.com/2/article/v25/stream/?"
+ "category=news_society&count=20&min_behot_time=1476067842&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1476067224"
+ "&loc_mode=5&lac=4527&cid=28883&iid=5567581950&device_id=23365548172&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460"
+ "&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=352284041184817&openudid=1111111111110000";
//handler
andler handler = new Handler() {
private MyBaseAdapter adapter;
List<MyData> list = new ArrayList<MyData>();
public void handleMessage(Message msg) {
String s = (String) msg.obj;
int tag = msg.arg1;
//解析json
Gson g = new Gson();
bean = g.fromJson(s, Bean.class);
List<MyData> data = bean.data;
//判断加载/刷新
switch (tag) {
case 1:
list.addAll(bean.data);
adapter = new MyBaseAdapter(MainActivity.this, list);
xv.setAdapter(adapter);
break;
case 2:
list.clear();
list.addAll(bean.data);
adapter.notifyDataSetChanged();
stopxlistview();
break;
case 3:
list.addAll(bean.data);
adapter.notifyDataSetChanged();
stopxlistview();
break;
default:
break;
}
}
private void stopxlistview() {
xv.stopRefresh();
String time=gettime();
xv.setRefreshTime(time);
xv.stopLoadMore();
}
private String gettime() {
SimpleDateFormat format=new SimpleDateFormat("hh:mm:ss");
String string = format.format(new Date());
return string;
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xv = (XListView) findViewById(R.id.xv);
geturl(INIT);
//是否加载
xv.setPullLoadEnable(true);
//刷新
xv.setXListViewListener(this);
}
//请求网络
public void geturl(final int tag) {
HttpUtils utils = new HttpUtils();
utils.configCurrentHttpCacheExpiry(0);
utils.send(HttpMethod.GET, path, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result = arg0.result;
Message message = new Message();
message.obj = result;
message.arg1 = tag;
handler.sendMessage(message);
}
});
}
//xlistview监听刷新加载
@Override
public void onRefresh() {
geturl(REFRESH);
}
@Override
public void onLoadMore() {
geturl(LOADMORE);
}
//baseadapter适配器
public class MyBaseAdapter extends BaseAdapter {
private Context context;
private List<MyData> data;
public MyBaseAdapter(Context context, List<MyData> data) {
this.context = context;
this.data = data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int i = getItemViewType(position);
ViewHolder1 vh1 = null;
ViewHolder2 vh2 = null;
ViewHolder3 vh3 = null;
ViewHolder4 vh4 = null;
if (convertView == null) {
switch (i) {
case 0:
// 大圖
convertView = View.inflate(context, R.layout.largeimg_item,
null);
vh1 = new ViewHolder1();
vh1.large_img = (ImageView) convertView
.findViewById(R.id.large_img);
vh1.large_title = (TextView) convertView
.findViewById(R.id.large_title);
convertView.setTag(vh1);
break;
case 1:
// 三張小圖
convertView = View
.inflate(context, R.layout.imglist_item, null);
vh2 = new ViewHolder2();
vh2.imglist_img = (ImageView) convertView
.findViewById(R.id.imglist_img);
vh2.imglist_img1 = (ImageView) convertView
.findViewById(R.id.imglist_img1);
vh2.imglist_img2 = (ImageView) convertView
.findViewById(R.id.imglist_img2);
vh2.imglist_title = (TextView) convertView
.findViewById(R.id.imglist_title);
convertView.setTag(vh2);
break;
case 2:
// 中图
convertView = View.inflate(context, R.layout.middle_item, null);
vh3 = new ViewHolder3();
vh3.middle_img = (ImageView) convertView
.findViewById(R.id.middle_img);
vh3.middle_title = (TextView) convertView
.findViewById(R.id.middle_title);
convertView.setTag(vh3);
break;
case 3:
// 一个标题
convertView = View.inflate(context, R.layout.textview_item,
null);
vh4 = new ViewHolder4();
vh4.title = (TextView) convertView.findViewById(R.id.title);
convertView.setTag(vh4);
break;
}
} else {
switch (i) {
case 0:
vh1 = (ViewHolder1) convertView.getTag();
break;
case 1:
vh2 = (ViewHolder2) convertView.getTag();
break;
case 2:
vh3 = (ViewHolder3) convertView.getTag();
break;
case 3:
vh4 = (ViewHolder4) convertView.getTag();
break;
}
}
MyData list = data.get(position);
ImageLoader imageLoader = ImageLoader.getInstance();
switch (i) {
case 0:
vh1.large_title.setText(list.title);
imageLoader.displayImage(list.large_image_list.get(0).url,
vh1.large_img);
break;
case 1:
vh2.imglist_title.setText(list.title);
imageLoader.displayImage(list.image_list.get(0).url,
vh2.imglist_img);
imageLoader.displayImage(list.image_list.get(1).url,
vh2.imglist_img1);
imageLoader.displayImage(list.image_list.get(2).url,
vh2.imglist_img2);
break;
case 2:
vh3.middle_title.setText(list.title);
imageLoader.displayImage(list.middle_image.url, vh3.middle_img);
break;
case 3:
vh4.title.setText(list.title);
break;
default:
break;
}
return convertView;
}
@Override
public int getViewTypeCount() {
return 4;
}
// 每个条目的布局视图
@Override
**public int getItemViewType(int position)** {
MyData d = data.get(position);
if (d.large_image_list != null) {
return 0;
} else if (d.image_list != null && d.image_list.size() == 3) {
return 1;
} else if (d.middle_image != null
&& !TextUtils.isEmpty(d.middle_image.url)
&& d.image_list != null && d.image_list.size() == 0) {
return 2;
} else if (d.large_image_list == null && d.middle_image == null
&& d.image_list != null && d.image_list.size() == 0) {
return 3;
}
return 3;
}
class ViewHolder1 {
TextView large_title;
ImageView large_img;
}
class ViewHolder2 {
TextView imglist_title;
ImageView imglist_img;
ImageView imglist_img1;
ImageView imglist_img2;
}
class ViewHolder3 {
TextView middle_title;
ImageView middle_img;
}
class ViewHolder4 {
TextView title;
}
}