private String path = "http://fun.51fanli.com/api/taohuasuan/getHotItems/?c_src=5&cids=9000&page=1&size=10";
private ArrayList<Item> listItems;
private int num;
private Button selectAll;
private Button deleteAll;
private Button retuenAll;
private TextView total;
private ListView listView;
private float totalPrice = 0;
private MyAdapter adapter;
private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
if (msg.what == 0) {
listItems = (ArrayList<Item>) msg.obj;
// 格式化各个商品的价格
for (int i=0; i< listItems.size(); i++) {
float p = listItems.get(i).price;
listItems.get(i).price = (Math.round(p*100))/100;
}
adapter = new MyAdapter();
listView.setAdapter(adapter);
totalPrice = 0;
for (int i=0; i<listItems.size(); i++) {
if (listItems.get(i).isChecked) {
totalPrice += listItems.get(i).price;
}
}
total.setText("总价:"+totalPrice);
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
getInfoFromNet();
}
private void initView(){
listView = (ListView) findViewById(R.id.listView);
selectAll = (Button) findViewById(R.id.selectAll);
deleteAll = (Button) findViewById(R.id.deleteAll);
retuenAll = (Button) findViewById(R.id.retuenAll);
total = (TextView) findViewById(R.id.total);
selectAll.setOnClickListener(MainActivity.this);
deleteAll.setOnClickListener(MainActivity.this);
retuenAll.setOnClickListener(MainActivity.this);
}
// 定义方法请求并解析数据
private void getInfoFromNet () {
new Thread(){
public void run() {
HttpUtils util = new HttpUtils();
util.configDefaultHttpCacheExpiry(10);
util.send(HttpMethod.GET, path, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String info = arg0.result;
Gson gson = new Gson();
ModelBean bean = gson.fromJson(info, ModelBean.class);
Message msg = Message.obtain();
msg.what = 0;
msg.obj = bean.data.items;
handler.sendMessage(msg);
}
});
};
}.start();
}
// 创建XListView适配器
private class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return listItems.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = View.inflate(MainActivity.this, R.layout.item, null);
holder.choose = (CheckBox) convertView.findViewById(R.id.choose);
holder.cover = (ImageView) convertView.findViewById(R.id.cover);
holder.name = (TextView) convertView.findViewById(R.id.name);
holder.price = (TextView) convertView.findViewById(R.id.price);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// 从集合中获得条目选中状态并赋值
if(listItems.get(position).isChecked==true){
holder.choose.setChecked(true);
} else {
holder.choose.setChecked(false);
}
// 设置选中复选框Click点击事件,若设置状态改变监听事件则其他操作后刷新集合会混乱价格
holder.choose.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 获得的选中状态为点击事件操作之后的状态
if(holder.choose.isChecked()){
listItems.get(position).isChecked = true;
totalPrice += listItems.get(position).price;
total.setText("总价:"+totalPrice);
} else {
listItems.get(position).isChecked = false;
totalPrice -= listItems.get(position).price;
total.setText("总价:"+totalPrice);
}
}
});
// 为控件赋值
ImageLoader.getInstance().displayImage(listItems.get(position).img1, holder.cover);
holder.name.setText(listItems.get(position).name);
holder.price.setText(listItems.get(position).price+"");
return convertView;
}
}
private class ViewHolder {
public CheckBox choose;
public ImageView cover;
public TextView name;
public TextView price;
}
// 全选、反选、删除按钮的监听
@Override
public void onClick(View v) {
switch (v.getId()) {
// 选中全部商品,操作之前先将总价清零,然后改变集合中条目状态
case R.id.selectAll:
totalPrice = 0;
for (int i=0; i<listItems.size(); i++) {
listItems.get(i).isChecked = true;
totalPrice += listItems.get(i).price;
}
break;
2016/9/25
// 全不选状态,价格清零,集合条目状态改变
case R.id.deleteAll:
totalPrice = 0;
for (int i=0; i<listItems.size(); i++) {
listItems.get(i).isChecked = false;
}
break;
// 反选、
case R.id.retuenAll:
totalPrice = 0;
for (int i=0; i< listItems.size(); i++) {
// 如果原来状态是选中,则设置为不选中
if (listItems.get(i).isChecked) {
listItems.get(i).isChecked = false;
}
// 如果初始状态为未选中,则改为选中
else if (!listItems.get(i).isChecked) {
listItems.get(i).isChecked = true;
totalPrice += listItems.get(i).price;
}
}
break;
// 删除选中状态,遍历选中商品,删除集合中的数据,然后删除集合中对应的数据
case R.id.deleteCart:
Iterator<DataBaseCartBean> it = listCart.iterator();
while(it.hasNext()){
DataBaseCartBean bean=it.next();
if(bean.isChecked){
dao.deleteGoodsCart(MyApplication.getInstance().name, bean.url);
it.remove();
}
}
money = 0;
check.setChecked(false);
break;
default:
break;
}
total.setText("总价:"+totalPrice);
adapter.notifyDataSetChanged();
}
电商项目购物车基本实现
最新推荐文章于 2024-03-13 15:59:22 发布