1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:Android="http://schemas.android.com/apk/res/android"
  3. Android:orientation="vertical"
  4. Android:layout_width="fill_parent"
  5. Android:layout_height="fill_parent">
  6. <!--结算-->
  7. <LinearLayoutAndroid:gravity="center_horizontal"
  8. Android:orientation="horizontal"android:layout_width="fill_parent"
  9. Android:layout_height="wrap_content">
  10. <TextViewAndroid:text="结算:"
  11. Android:layout_width="wrap_content"
  12. Android:layout_height="wrap_content"
  13. Android:textColor="#FFFFFFFF"
  14. Android:textSize="20px"/>
  15. <ImageButtonAndroid:id="@+id/imgbt_sum"
  16. Android:layout_width="40px"
  17. Android:layout_height="40px"
  18. Android:background="@drawable/shopping"/>
  19. </LinearLayout>
  20. <TextViewAndroid:text="商品列表:"
  21. Android:layout_width="wrap_content"
  22. Android:layout_height="wrap_content"
  23. Android:textColor="#FFFFFFFF"/>
  24. <!--商品列表-->
  25. <ListViewAndroid:id="@+id/list_goods"
  26. Android:layout_width="fill_parent"
  27. Android:layout_height="wrap_content"/>
  28. </LinearLayout>

列表项布局文件list_item.xml

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:Android="http://schemas.android.com/apk/res/android"
  3. Android:orientation="horizontal"android:layout_width="fill_parent"
  4. Android:layout_height="fill_parent">
  5. <!--商品图片-->
  6. <ImageViewAndroid:id="@+id/imageItem"
  7. Android:layout_width="wrap_content"
  8. Android:layout_height="wrap_content"
  9. Android:layout_margin="5px"/>
  10. <!--商品信息-->
  11. <LinearLayoutAndroid:orientation="vertical"
  12. Android:layout_width="wrap_content"
  13. Android:layout_height="wrap_content">
  14. <TextViewAndroid:id="@+id/titleItem"
  15. Android:layout_width="wrap_content"
  16. Android:layout_height="wrap_content"
  17. Android:textColor="#FFFFFFFF"
  18. Android:textSize="13px"/>
  19. <TextViewAndroid:id="@+id/infoItem"
  20. Android:layout_width="wrap_content"
  21. Android:layout_height="wrap_content"
  22. Android:textColor="#FFFFFFFF"
  23. Android:textSize="22px"/>
  24. </LinearLayout>
  25. <!--购买和商品详情-->
  26. <LinearLayoutAndroid:gravity="right"
  27. Android:orientation="horizontal"android:layout_width="fill_parent"
  28. Android:layout_height="wrap_content">
  29. <CheckBoxAndroid:id="@+id/checkItem"
  30. Android:layout_width="wrap_content"
  31. Android:layout_height="wrap_content"
  32. Android:layout_margin="5px"/>
  33. <ButtonAndroid:id="@+id/detailItem"
  34. Android:layout_width="wrap_content"
  35. Android:layout_height="wrap_content"
  36. Android:layout_margin="5px"/>
  37. </LinearLayout>
  38. </LinearLayout>

2)代码,主代码:

  1. packagecom.myAndroid.test;
  2. importjava.util.ArrayList;
  3. importjava.util.HashMap;
  4. importjava.util.List;
  5. importjava.util.Map;
  6. importAndroid.app.Activity;
  7. importAndroid.app.AlertDialog;
  8. importAndroid.content.DialogInterface;
  9. importAndroid.os.Bundle;
  10. importAndroid.view.View;
  11. importAndroid.view.View.OnClickListener;
  12. importAndroid.widget.ArrayAdapter;
  13. importAndroid.widget.ImageButton;
  14. importAndroid.widget.ListView;
  15. publicclassMyListViewextendsActivity{
  16. privateListViewlistView;
  17. privateImageButtonimgbt_sum;
  18. privateListViewAdapterlistViewAdapter;
  19. privateList<Map<String,Object>>listItems;
  20. privateInteger[]imgeIDs={R.drawable.cake,
  21. R.drawable.gift,R.drawable.letter,
  22. R.drawable.love,R.drawable.mouse,
  23. R.drawable.music};
  24. privateString[]goodsNames={"蛋糕","礼物",
  25. "邮票","爱心","鼠标","音乐CD"};
  26. privateString[]goodsDetails={
  27. "蛋糕:好好吃。",
  28. "礼物:礼轻情重。",
  29. "邮票:环游世界。",
  30. "爱心:世界都有爱。",
  31. "鼠标:反应敏捷。",
  32. "音乐CD:酷我音乐。"};
  33. /**Calledwhentheactivityisfirstcreated.*/
  34. @Override
  35. publicvoidonCreate(BundlesavedInstanceState){
  36. super.onCreate(savedInstanceState);
  37. setContentView(R.layout.main);
  38. listView=(ListView)findViewById(R.id.list_goods);
  39. imgbt_sum=(ImageButton)findViewById(R.id.imgbt_sum);
  40. imgbt_sum.setOnClickListener(newClickEvent());
  41. listItems=getListItems();
  42. listViewAdapter=newListViewAdapter(this,listItems);//创建适配器
  43. listView.setAdapter(listViewAdapter);
  44. }
  45. /**
  46. *初始化商品信息
  47. */
  48. privateList<Map<String,Object>>getListItems(){
  49. List<Map<String,Object>>listItems=newArrayList<Map<String,Object>>();
  50. for(inti=0;i<goodsNames.length;i++){
  51. Map<String,Object>map=newHashMap<String,Object>();
  52. map.put("image",imgeIDs[i]);//图片资源
  53. map.put("title","物品名称:");//物品标题
  54. map.put("info",goodsNames[i]);//物品名称
  55. map.put("detail",goodsDetails[i]);//物品详情
  56. listItems.add(map);
  57. }
  58. returnlistItems;
  59. }
  60. classClickEventimplementsOnClickListener{
  61. @Override
  62. publicvoidonClick(Viewv){
  63. //TODOAuto-generatedmethodstub
  64. StringgoodsList="";
  65. for(inti=0;i<listItems.size();i++){
  66. goodsList+=listViewAdapter.hasChecked(i)?goodsNames[i]+"":"";
  67. }
  68. newAlertDialog.Builder(MyListView.this)
  69. .setTitle("购物清单:")
  70. .setMessage("你好,你选择了如下商品:\n"+goodsList)
  71. .setPositiveButton("确定",null)
  72. .show();
  73. }
  74. }
  75. }

适配器代码:

  1. packagecom.myAndroid.test;
  2. importjava.util.List;
  3. importjava.util.Map;
  4. importAndroid.app.AlertDialog;
  5. importAndroid.content.Context;
  6. importAndroid.util.Log;
  7. importAndroid.view.LayoutInflater;
  8. importAndroid.view.View;
  9. importAndroid.view.ViewGroup;
  10. importAndroid.widget.BaseAdapter;
  11. importAndroid.widget.Button;
  12. importAndroid.widget.CheckBox;
  13. importAndroid.widget.CompoundButton;
  14. importAndroid.widget.ImageView;
  15. importAndroid.widget.ListView;
  16. importAndroid.widget.TextView;
  17. publicclassListViewAdapterextendsBaseAdapter{
  18. privateContextcontext;//运行上下文
  19. privateList<Map<String,Object>>listItems;//商品信息集合
  20. privateLayoutInflaterlistContainer;//视图容器
  21. privateboolean[]hasChecked;//记录商品选中状态
  22. publicfinalclassListItemView{//自定义控件集合
  23. publicImageViewimage;
  24. publicTextViewtitle;
  25. publicTextViewinfo;
  26. publicCheckBoxcheck;
  27. publicButtondetail;
  28. }
  29. publicListViewAdapter(Contextcontext,List<Map<String,Object>>listItems){
  30. this.context=context;
  31. listContainer=LayoutInflater.from(context);//创建视图容器并设置上下文
  32. this.listItems=listItems;
  33. hasChecked=newboolean[getCount()];
  34. }
  35. publicintgetCount(){
  36. //TODOAuto-generatedmethodstub
  37. returnlistItems.size();
  38. }
  39. publicObjectgetItem(intarg0){
  40. //TODOAuto-generatedmethodstub
  41. returnnull;
  42. }
  43. publiclonggetItemId(intarg0){
  44. //TODOAuto-generatedmethodstub
  45. return0;
  46. }
  47. /**
  48. *记录勾选了哪个物品
  49. *@paramcheckedID选中的物品序号
  50. */
  51. privatevoidcheckedChange(intcheckedID){
  52. hasChecked[checkedID]=!hasChecked[checkedID];
  53. }
  54. /**
  55. *判断物品是否选择
  56. *@paramcheckedID物品序号
  57. *@return返回是否选中状态
  58. */
  59. publicbooleanhasChecked(intcheckedID){
  60. returnhasChecked[checkedID];
  61. }
  62. /**
  63. *显示物品详情
  64. *@paramclickID
  65. */
  66. privatevoidshowDetailInfo(intclickID){
  67. newAlertDialog.Builder(context)
  68. .setTitle("物品详情:"+listItems.get(clickID).get("info"))
  69. .setMessage(listItems.get(clickID).get("detail").toString())
  70. .setPositiveButton("确定",null)
  71. .show();
  72. }
  73. /**
  74. *ListViewItem设置
  75. */
  76. publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
  77. //TODOAuto-generatedmethodstub
  78. Log.e("method","getView");
  79. finalintselectID=position;
  80. //自定义视图
  81. ListItemViewlistItemView=null;
  82. if(convertView==null){
  83. listItemView=newListItemView();
  84. //获取list_item布局文件的视图
  85. convertView=listContainer.inflate(R.layout.list_item,null);
  86. //获取控件对象
  87. listItemView.image=(ImageView)convertView.findViewById(R.id.imageItem);
  88. listItemView.title=(TextView)convertView.findViewById(R.id.titleItem);
  89. listItemView.info=(TextView)convertView.findViewById(R.id.infoItem);
  90. listItemView.detail=(Button)convertView.findViewById(R.id.detailItem);
  91. listItemView.check=(CheckBox)convertView.findViewById(R.id.checkItem);
  92. //设置控件集到convertView
  93. convertView.setTag(listItemView);
  94. }else{
  95. listItemView=(ListItemView)convertView.getTag();
  96. }
  97. //Log.e("image",(String)listItems.get(position).get("title"));//测试
  98. //Log.e("image",(String)listItems.get(position).get("info"));
  99. //设置文字和图片
  100. listItemView.image.setBackgroundResource((Integer)listItems.get(
  101. position).get("image"));
  102. listItemView.title.setText((String)listItems.get(position)
  103. .get("title"));
  104. listItemView.info.setText((String)listItems.get(position).get("info"));
  105. listItemView.detail.setText("商品详情");
  106. //注册按钮点击时间爱你
  107. listItemView.detail.setOnClickListener(newView.OnClickListener(){
  108. @Override
  109. publicvoidonClick(Viewv){
  110. //显示物品详情
  111. showDetailInfo(selectID);
  112. }
  113. });
  114. //注册多选框状态事件处理
  115. listItemView.check
  116. .setOnCheckedChangeListener(newCheckBox.OnCheckedChangeListener(){
  117. @Override
  118. publicvoidonCheckedChanged(CompoundButtonbuttonView,
  119. booleanisChecked){
  120. //记录物品选中状态
  121. checkedChange(selectID);
  122. }
  123. });
  124. returnconvertView;
  125. }
  126. }

更多相关文章

  1. Android(安卓)简单购物车
  2. ReactNative Android/iOS 打包详情流程
  3. android sdk 版本以及对应 API level
  4. android 跳转到当前应用的详情页面
  5. Android(安卓)kotlin学习之----kotlin+recycleview展示数据
  6. android中的自定义控件
  7. android平台搭建详情
  8. 基于ANDROID的网上订餐系统
  9. Android之自定义Adapter的ListView

随机推荐

  1. 建立一个简单的android涂鸦工程
  2. import android eclipse project to andr
  3. android TextView属性汇总
  4. Android 元素居中
  5. Android查看源码
  6. 获取Google Maps API 指纹证书时获取的是
  7. SQLiteDatabase 启用事务源码分析
  8. Android下图片或按钮等可拖动到任意位置
  9. Android给ListView设置分割线Divider样式
  10. Android Telephony Framework相关知识整