【移动应用开发技术】支持多项选择的ExpandableListView怎么用_第1页
【移动应用开发技术】支持多项选择的ExpandableListView怎么用_第2页
【移动应用开发技术】支持多项选择的ExpandableListView怎么用_第3页
【移动应用开发技术】支持多项选择的ExpandableListView怎么用_第4页
【移动应用开发技术】支持多项选择的ExpandableListView怎么用_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】支持多项选择的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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论