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. RK3288 Android 7.1 屏蔽“您的设备内部出现了问题。请联系您的
  2. Android收藏商品/关注商品
  3. Android滑动冲突二内部拦截法详情
  4. android面试知识点详情
  5. Android NetworkInfo.DetailedState 获取wifi连接状态详情
  6. go语言网络编程、http处理流程详情
  7. 使用XML实现BBS(主题列表篇)的详情介绍
  8. 基于XML的购物车的实例代码详情
  9. 使用XMLHTTP发送超长XML表单数据的详情

随机推荐

  1. Android(安卓)关于位图的操作
  2. 安卓ListView 数据分批加载
  3. 如何部署android sdk中的demo
  4. 利用Android(安卓)Studio构建App
  5. android 模拟器和PC用sockets通讯
  6. Android(安卓)View之测量
  7. Android(安卓)发展历史
  8. (4.1.16)android 自定义progressDialog实现
  9. What is Gradle
  10. Android(安卓): 录音实现之AudioRecord类