下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】支持多项选择的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-2030)
- 全球及中国拖网渔船游艇行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告(2024-2030)
- 全球及中国抗癫痫药物行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告(2024-2030)
- 全球及中国手解剖模型行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告(2024-2030)
- 全球及中国感应炊具行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告(2024-2030)
- 全球及中国微控制器插座行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告(2024-2030)
- 2023年氨纶锦纶包覆丝企业风险管理与内控
- 全球及中国工业陶瓷涂料行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告(2024-2030)
- 2023年传动链企业风险管理与内控
- 2024-2030年计量吸入器装置行业市场现状供需分析及市场深度研究发展前景及规划投资研究报告
- 宋代海外贸易(小组展示)
- 在职证明模板71100
- 小型三角洲式3D打印机的机械结构设计
- 疾病预防控制中心管理体系宣贯考核试题
- 胆囊炎住院病历
- 《旅游经济学》全部重点总结
- 税务登记表格(适用单位纳税人)
- 肘关节评定表
- 筹建期会计实务及报表填写
- 中 国 消 防 史 简 介;
- 三视图教案.ppt
评论
0/150
提交评论