


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android中怎么实现带图片和checkbox的listview
这篇文章给大家介绍Android中怎么实现带图片和checkbox的listview,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。先新建一个MyAdapter类,继承自BaseAdapter。在MyAdapter中实现对数据的绑定,我这儿由于是测试的,所以把数据写死了。Java代码
package
com.zwq.umeng;
import
java.util.ArrayList;
import
java.util.HashMap;
import
java.util.List;
import
java.util.Map;
import
android.content.Context;
import
android.view.LayoutInflater;
import
android.view.View;
import
android.view.ViewGroup;
import
android.widget.BaseAdapter;
import
android.widget.CheckBox;
import
android.widget.ImageView;
import
android.widget.TextView;
public
class
MyAdapter
extends
BaseAdapter
{
private
LayoutInflater
mInflater;
private
List<Map<String,
Object>>
mData;
public
static
Map<Integer,
Boolean>
isSelected;
public
MyAdapter(Context
context)
{
mInflater
=
LayoutInflater.from(context);
init();
}
//初始化
private
void
init()
{
mData=new
ArrayList<Map<String,
Object>>();
for
(int
i
=
0;
i
<
5;
i++)
{
Map<String,
Object>
map
=
new
HashMap<String,
Object>();
map.put("img",
R.drawable.icon);
map.put("title",
"第"
+
(i
+
1)
+
"行的标题");
mData.add(map);
}
//这儿定义isSelected这个map是记录每个listitem的状态,初始状态全部为false。
isSelected
=
new
HashMap<Integer,
Boolean>();
for
(int
i
=
0;
i
<
mData.size();
i++)
{
isSelected.put(i,
false);
}
}
@Override
public
int
getCount()
{
return
mData.size();
}
@Override
public
Object
getItem(int
position)
{
return
null;
}
@Override
public
long
getItemId(int
position)
{
return
0;
}
@Override
public
View
getView(int
position,
View
convertView,
ViewGroup
parent)
{
ViewHolder
holder
=
null;
//convertView为null的时候初始化convertView。
if
(convertView
==
null)
{
holder
=
new
ViewHolder();
convertView
=
mInflater.inflate(R.layout.vlist,
null);
holder.img
=
(ImageView)
convertView.findViewById(R.id.img);
holder.title
=
(TextView)
convertView.findViewById(R.id.title);
holder.cBox
=
(CheckBox)
convertView.findViewById(R.id.cb);
convertView.setTag(holder);
}
else
{
holder
=
(ViewHolder)
convertView.getTag();
}
holder.img.setBackgroundResource((Integer)
mData.get(position).get(
"img"));
holder.title.setText(mData.get(position).get("title").toString());
holder.cBox.setChecked(isSelected.get(position));
return
convertView;
}
public
final
class
ViewHolder
{
public
ImageView
img;
public
TextView
title;
public
CheckBox
cBox;
}
}上面类中要注意getView()方法中对数据的处理。接下要新建一个list.xml文件,这个就是布局image、textview、checkbox。Java代码
<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"/>
<TextView
android:id="@+id/title"
android:textSize="18dip"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<CheckBox
android:id="@+id/cb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"/>
</LinearLayout>android:layout_weight="1"这一句可以使中间的textview权重增大,从而后面的checkbok可以居右显示。android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"这三句很重要,如果不加就会出现错误。由于checkbox的点击事件优先级比listview的高,所以要在checkbox中添加android:focusable="false",使得checkbox初始的时候没有获取焦点。接下来在main.xml中添加Listview组件Java代码<ListView
android:id="@+id/lv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>接下来就是在activity中调用:Java代码list=(ListView)findViewById(R.id.lv);
MyAdapter
adapter=new
MyAdapter(this);
list.setAdapter(adapter);
list.setItemsCanFocus(false);
list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
list.setOnItemClickListener(new
OnItemClickListener(){
@Override
public
void
onItemClick(AdapterView<?>
parent,
View
view,
int
position,
long
id)
{
ViewHolder
vHollder
=
(ViewHolder)
view.getTag();
//在每次获取点击的item时将对于的checkbox状态改变,同时修改map的值。
vHollder.cBox.toggle();
MyAdapter.isSelected.put(position,
vHollder.cBox.isChecked());
}
});***看一下效果图:要获取哪些项目被选择了,可以这样测试:Java代码OnClickListener
bPop
=
new
OnClickListener()
{
@Override
public
void
onClick(View
v)
{
for(int
i=0;i<list.getCount();i++){
if(MyAdapter.isSelected.get(i)){
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小脑扁桃体出血护理课件
- 写人作文我的母亲500字15篇范文
- 影视行业内容创作合作协议
- 土壤污染修复工程施工协议
- 交互式电子白板在小学数学教学评估中的应用计划
- 2025年私立医院急诊科发展计划
- 光伏电站项目技术支持与进度措施
- 平顶山文化艺术职业学院《手机媒体研究》2023-2024学年第一学期期末试卷
- 实习生传媒策划带教计划
- 李吉林情境教育促进环境教育的心得体会
- GB/T 27651-2011防腐木材的使用分类和要求
- GB/T 12241-2021安全阀一般要求
- 杭州市残疾儿童市级定点康复机构申请表
- GB 16663-1996醇基液体燃料
- CB/T 3623-1994舵系统安装与效用试验要求
- 伤寒论的讲义辨太阳病脉证并治课件
- 国家级农产品质量安全检测技能竞赛考试总题库(含答案)
- 湖北省乡镇卫生院街道社区卫生服务中心地址医疗机构名单
- 事业单位工作人员岗位等级确认审核表
- 立破并举 内外互联 构建西藏全要素资源交易市场
- (完整版)UPS技术培训教材PPT(共-54张)课件
评论
0/150
提交评论