packagecom.adapter;/*** Created by hexiaolu on 2017/4/13.*/
importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importandroid.app.Activity;importandroid.content.Context;importandroid.os.Bundle;importandroid.text.Editable;importandroid.text.TextWatcher;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseAdapter;importandroid.widget.EditText;importandroid.widget.ListView;importandroid.widget.TextView;importcom.example.administrator.stock2.R;public class ListAdapter extendsBaseAdapter {
HashMap item= newHashMap();privateLayoutInflater mInflater;//private List> mData;//存储的EditText值
private ArrayList mData=newArrayList();//private ArrayList mDate = new ArrayList();
public Map editorValue = new HashMap();// privateTextView spendMoney;publicListAdapter(Context context, ArrayList data,TextView spend) {
spendMoney=spend;
mData=data;
mInflater=LayoutInflater.from(context);
init();
}//初始化
private voidinit() {
editorValue.clear();
}
@Overridepublic intgetCount() {returnmData.size();
}
@Overridepublic Object getItem(intposition) {return null;
}
@Overridepublic long getItemId(intposition) {return 0;
}private Integer index = -1;
@Overridepublic View getView(intposition, View convertView, ViewGroup parent) {
ViewHolder holder= null;//convertView为null的时候初始化convertView。
if (convertView == null) {
holder= newViewHolder();
convertView= mInflater.inflate(R.layout.list_item, null);
holder.goodsName=(TextView) convertView
.findViewById(R.id.list_item_goodsName);
holder.goodsSellPrice=(TextView) convertView
.findViewById(R.id.list_item_goodsSellPrice);
holder.goodsUnit=(TextView) convertView
.findViewById(R.id.list_item_goodsUnit);
holder.goodsSellNum=(EditText) convertView
.findViewById(R.id.list_item_goodsSellNum);
holder.goodsSellNum.setTag(position);/*holder.goodsSellNum.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
index = (Integer) v.getTag();
}
return false;
}
});*/
class MyTextWatcher implementsTextWatcher {publicMyTextWatcher(ViewHolder holder) {
mHolder=holder;
}privateViewHolder mHolder;
@Overridepublic void onTextChanged(CharSequence s, intstart,int before, intcount) {
}
@Overridepublic void beforeTextChanged(CharSequence s, intstart,int count, intafter) {
}
@Overridepublic voidafterTextChanged(Editable s) {if (s != null && !"".equals(s.toString())) {int position =(Integer) mHolder.goodsSellNum.getTag();/*mData.get(position).put("goodsSellNum",s.toString());// 当EditText数据发生改变的时候存到data变量中*/item=(HashMap)mData.get(position);
item.put("goodsSellNum",s.toString());
mData.set(position,item);
spendMoney.setText(String.valueOf(calculate()));//计算总价格
}
}
}
holder.goodsSellNum.addTextChangedListener(newMyTextWatcher(holder));
convertView.setTag(holder);
}else{
holder=(ViewHolder) convertView.getTag();
holder.goodsSellNum.setTag(position);
}
item=(HashMap)mData.get(position);
Object value=item.get("goodsName");//Object value = mData.get(position).get("list_item_goodsName");
if (value != null) {
holder.goodsName.setText((String) value);
}
item=(HashMap)mData.get(position);
value=item.get("goodsSellPrice");//value = mData.get(position).get("list_item_goodsSellPrice");
if (value != null) {
holder.goodsSellPrice.setText(value.toString());
}
item=(HashMap)mData.get(position);
value=item.get("goodsUnit");//value = mData.get(position).get("list_item_goodsUnit");
if (value != null) {
holder.goodsUnit.setText(value.toString());
}
item=(HashMap)mData.get(position);
value=item.get("goodsSellNum");//value = mData.get(position).get("list_item_goodsSellNum");
if (value != null && !"".equals(value)) {
holder.goodsSellNum.setText(value.toString());
}
holder.goodsSellNum.clearFocus();if (index != -1 && index ==position) {
holder.goodsSellNum.requestFocus();
}returnconvertView;
}public final classViewHolder {publicTextView goodsName;publicTextView goodsSellPrice;public EditText goodsSellNum;//ListView中的输入
public TextView goodsUnit;//用来定义的标志性主键,可不用关心
}public floatcalculate() {float money = 0;for (int i = 0; i < mData.size(); i++) {
HashMap item= newHashMap();
item=(HashMap) mData.get(i);float num = Float.parseFloat(item.get("goodsSellNum").toString());float price = Float.parseFloat(item.get("goodsSellPrice").toString());
money= money + num *price;
}returnmoney;
}
}