下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】支持多项选择的ExpandableListView怎么用
目标(需求):结果图:/upload/information/20200623/125/122727.jpg实现:<?xml
version="1.0"
encoding="utf-8"?>
<com.home.mymultichecklistview.CheckableLinearLayout
xmlns:android="/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<com.home.mymultichecklistview.CheckableTextView
android:id="@+id/item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dip"
android:layout_weight="1"
/>
<com.home.mymultichecklistview.InertCheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:maxWidth="40dp"
android:maxHeight="40dp"
android:focusable="false"
android:layout_gravity="right"
android:button="@drawable/checkbox"
/>
</com.home.mymultichecklistview.CheckableLinearLayout>@Override
public
View
getGroupView(int
groupPosition,
boolean
isExpanded,
View
convertView,
ViewGroup
parent)
{
View
groupView
=
convertView;
if
(groupView
==
null)
{
groupView
=
new
TextView(context);
((TextView)groupView).setGravity(Gravity.LEFT
|
Gravity.CENTER_VERTICAL);
groupView.setPadding(50,0,0,0);
}
((TextView)groupView).setText(groupData[groupPosition]);
((TextView)groupView).setTextColor(context.getResources().getColor(R.color.fgcolor));
return
groupView;
}
@Override
public
View
getChildView(final
int
groupPosition,
final
int
childPosition,
boolean
isLastChild,
View
convertView,
ViewGroup
parent)
{
View
itemView
=
convertView;
final
ViewHolder
vh;
if
(itemView
==
null)
{
LayoutInflater
inflater
=
(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
itemView
=
inflater.inflate(R.layout.item_view,
null);
vh
=
new
ViewHolder();
vh.layout
=
(CheckableLinearLayout)itemView.findViewById(R.id.layout);
vh.item
=
(TextView)itemView.findViewById(R.id.item);
itemView.setTag(vh);
}
else
{
vh
=
(ViewHolder)itemView.getTag();
}
vh.item.setText(itemData[groupPosition][childPosition]);
final
ExpandableListView
listView
=
((ExpandableListView)((MainActivity)context).findViewById(R.id.list));
final
int
position
=
listView.getFlatListPosition(ExpandableListView.getPackedPositionForChild(groupPosition,
childPosition));
listView.setItemChecked(position,
checkedState[groupPosition][childPosition]);
vh.layout.setOnClickListener(new
OnClickListener()
{
@Override
public
void
onClick(View
v)
{
((CheckableLinearLayout)v).toggle();
checkedState[groupPosition][childPosition]
=
!checkedState[groupPosition][childPosition];
listView.setItemChecked(position,
((CheckableLinearLayout)v).isChecked());
}
});
return
itemView;
}public
View
getChildView(final
int
groupPosition,
final
int
childPosition,
boolean
isLastChild,
View
convertView,
ViewGroup
parent)
{
View
itemView
=
convertView;
final
ViewHolder
vh;
...
final
int
position
=
listView.getFlatListPosition(ExpandableListView.getPackedPositionForChild(groupPosition,
childPosition));
listView.setItemChecked(position,
checkedState[groupPosition][childPosition]);
vh.layout.setOnClickListener(new
OnClickListener()
{
@Override
public
void
onClick(View
v)
{
((CheckableLinearLayout)v).toggle();
checkedState[groupPosition][childPosition]
=
!checkedState[groupPosition][childPosition];
listView.setItemChecked(position,
((CheckableLinearLayout)v).isChecked());
}
});
return
itemView;
}public
class
InertCheckBox
extends
CheckBox
{
@Override
public
boolean
onKeyDown(int
keyCode,
KeyEvent
event)
{
//直接返回false
return
false;
}
@Override
public
boolean
onKeyUp(int
keyCode,
KeyEvent
event)
{
//直接返回false
return
false;
}
@Override
public
boolean
onTouchEvent(MotionEvent
event)
{
//直接返回false
return
false;
}
@Override
public
boolean
onKeyMultiple(int
keyCode,
int
repeatCount,
KeyEvent
event)
{
//直接返回false
return
false;
...
}public
class
CheckableLinearLayout
extends
LinearLayout
implements
Checkable
{
...
@Override
public
void
setChecked(boolean
checked)
{
this.isChecked
=
checked;
for
(Checkable
view
:
checkableViews)
{
view.setChecked(checked);
}
}
@Override
public
boolean
isChecked()
{
return
this.isChecked;
}
@Override
public
void
toggle()
{
isChecked
=
!isChecked;
for
(Checkable
view
:
checkableViews)
{
view.toggle();
}
}
@Override
protected
void
onFinishInflate()
{
super.onFinishInflate();
for
(int
i=0;
i<this.getChildCount();
i++)
{
findCheckableChild(this.getChildAt(i));
}
}
private
void
findCheckableChild(View
child)
{
if
(child
instance
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年保健箱项目融资计划书
- 山西晋中榆次区事业单位招聘考试试题及答案
- 2024年电子装联专用设备项目经营分析报告
- 旋片真空泵项目评估报告
- 九九重阳节浓浓敬老情教案
- 板翅式换热器项目效益评估报告
- 工艺品及其他制造产品相关行业投资规划报告范本
- 导静电胶管相关行业投资方案范本
- PBT再生料相关项目投资计划书范本
- 物业管理政策法规
- (高清版)DZT 0220-2006 泥石流灾害防治工程勘查规范
- 留置针输液外渗护理个案
- 改善就医感受提升患者体验主题活动工作总结
- 南水北调干渠特大桥主桥环境保护专项方案
- 亮化方案设计
- 《国家心力衰竭指南 2023》解读
- 电动车检查表
- 雷士照明的控制权之争
- 金的人格让人格闪闪发光照亮前程
- 违规吃喝专项总结汇报
- 浅析互联网技术在物业服务品质提升中的应用
评论
0/150
提交评论