这是listview的适配器代码:
publicclassMyListViewAdapterextendsBaseAdapter{
//填充数据的list
privateArrayListfoodlist;
//用来控制CheckBox的选中状况
privatestaticHashMap[I]isSelected;
//上下文
privateContextcontext;
//用来导入布局
privateLayoutInflaterinflater=null;
//构造器
publicMyListViewAdapter(ArrayListlist,Contextcontext){
this.context=context;
this.foodlist=list;
inflater=LayoutInflater.from(context);
isSelected=newHashMap[I]();
//初始化数据
initDate();
}
//初始化isSelected的数据
privatevoidinitDate(){
for(inti=0;ifoods=newArrayList();
privateMyListViewAdapteradapter;
privateCheckBoxcheckBox;
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
initView();//初始化控件
Viewview=LayoutInflater.from(this).inflate(R.layout.item,null);
checkBox=(CheckBox)view.findViewById(R.id.check_box);
initData();//初始化虚拟数据
adapter=newMyListViewAdapter(foods,getApplicationContext());
listView.setAdapter(adapter);
}
publicvoidinitView(){
listView=(ListView)findViewById(R.id.drink_list);//listview列表控件
ok=(Button)findViewById(R.id.btn_commit);//确定按钮
ok.setOnClickListener(this);
listView.setOnItemClickListener(this);
}
/*
*初始化虚拟数据
**/
publicvoidinitData(){
Classcls=R.drawable.class;//反射
try{
foods.add(newFood(cls.getDeclaredField("d1").getInt(null),"猕猴桃汁",
"10"));
}catch(Exceptione){e.printStackTrace();}
}
/*按钮点击事件处理*/
@Override
publicvoidonClick(Viewv){
intmID=v.getId();
switch(mID){
caseR.id.btn_commit:
myPrice();//计算总价并输出
break;
}
}
/*
*计算总价格的方法
**/
publicvoidmyPrice(){
HashMap[I]map=MyListViewAdapter.getIsSelected();
Stringstr="";
intmoney=0;
for(inti=0;iparent,Viewview,intposition,longid){
MyListViewAdapter.ViewHolderholder=(MyListViewAdapter.ViewHolder)view.getTag();
MyListViewAdapter.getIsSelected().put(position,holder.cb.isChecked());
}
}
item的布局代码
[I]
main的布局代码
[B]
结果却是这样
![](https://img-bbs.csdn.net/upload/201905/13/1557685736_774763.jpg)
分 -->
|