ExpandableListView - 如何仅突出显示一组 child?
ExpandableListView - How to keep just one group child highlighted?
如何删除select所有其他 child 已 select 编辑的视图?我试图在任何给定时间仅保持一个 child 突出显示。在下面的代码中,我能够突出显示 child 但该组中的任何其他 child I select 保持突出显示。另外,如果我 select 一个 child 和切换组,下一个组 child 在相同的位置也会突出显示。
//CHILD CLICK LISTENER
lstRoute.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
for(int i = 0; i < parent.getChildCount(); i++)
{
View child = parent.getChildAt(i);
if(child instanceof ViewGroup)
{
//DO NOTHING
}else
{
child.setBackgroundColor(Color.TRANSPARENT);
}
}
v.setBackgroundColor(Color.GREEN);
return true;
}
});
//GROUP EXPANDED
lstRoute.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
//Only allow one group to be expanded at a time
if (lastExpandedPosition != -1 && groupPosition != lastExpandedPosition) {
lstRoute.collapseGroup(lastExpandedPosition);
}
lastExpandedPosition = groupPosition;
//Clear all selections
for(int i = 0; i < lstRoute.getChildCount(); i++)
{
View child = lstRoute.getChildAt(i);
if(child instanceof ViewGroup) {
child.setBackgroundColor(Color.argb(100,139,213,252)); //Light Blue
}else{
child.setBackgroundColor(Color.TRANSPARENT);
}
}
}
});
ListView
s 回收视图。这意味着,如果一个视图在一个组中被隐藏,它将在新打开的组中使用。
一般来说:在 ListView
s 中突出显示选择不应在 ClickListener
s 中实现,而应在自定义 Adapter
.
中实现
如何删除select所有其他 child 已 select 编辑的视图?我试图在任何给定时间仅保持一个 child 突出显示。在下面的代码中,我能够突出显示 child 但该组中的任何其他 child I select 保持突出显示。另外,如果我 select 一个 child 和切换组,下一个组 child 在相同的位置也会突出显示。
//CHILD CLICK LISTENER
lstRoute.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
for(int i = 0; i < parent.getChildCount(); i++)
{
View child = parent.getChildAt(i);
if(child instanceof ViewGroup)
{
//DO NOTHING
}else
{
child.setBackgroundColor(Color.TRANSPARENT);
}
}
v.setBackgroundColor(Color.GREEN);
return true;
}
});
//GROUP EXPANDED
lstRoute.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
//Only allow one group to be expanded at a time
if (lastExpandedPosition != -1 && groupPosition != lastExpandedPosition) {
lstRoute.collapseGroup(lastExpandedPosition);
}
lastExpandedPosition = groupPosition;
//Clear all selections
for(int i = 0; i < lstRoute.getChildCount(); i++)
{
View child = lstRoute.getChildAt(i);
if(child instanceof ViewGroup) {
child.setBackgroundColor(Color.argb(100,139,213,252)); //Light Blue
}else{
child.setBackgroundColor(Color.TRANSPARENT);
}
}
}
});
ListView
s 回收视图。这意味着,如果一个视图在一个组中被隐藏,它将在新打开的组中使用。
一般来说:在 ListView
s 中突出显示选择不应在 ClickListener
s 中实现,而应在自定义 Adapter
.