在 Expandable ListView 中突出显示 child 视图
Highlight child view inside Expandable ListView
我需要在用户触摸某个项目时突出显示可扩展列表视图的 child 视图。我希望保留颜色,而不仅仅是提供视觉反馈。我能够通过以下方式实现这一目标:
expandablelistview_options.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
v.setBackgroundColor(Color.BLUE);
return false;
}
});
但我的问题是,如果我在同一 parent 视图中选择另一个 child,则之前的选择不会被取消突出显示。
我该如何解决这个问题?
您可以采用以下方法:
1) 将最近点击的item的引用或位置保存为int或object。
2) 然后你可以做一个这样的函数并在项目点击时调用它并传递位置:
int lastItem = 0;
public void highlight(int clickedItem){
clickedItem.setBackground(//highlight color);
lastItem.setBackground(//unhighlight color);
lastItem = clickedItem;
}
3) 这将帮助您保存参考,并使处理上一个和当前项目变得容易。这只是我在处理此类案件时使用的一种方法。你必须使用这种方法。
希望对您有所帮助。
我需要在用户触摸某个项目时突出显示可扩展列表视图的 child 视图。我希望保留颜色,而不仅仅是提供视觉反馈。我能够通过以下方式实现这一目标:
expandablelistview_options.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
v.setBackgroundColor(Color.BLUE);
return false;
}
});
但我的问题是,如果我在同一 parent 视图中选择另一个 child,则之前的选择不会被取消突出显示。
我该如何解决这个问题?
您可以采用以下方法:
1) 将最近点击的item的引用或位置保存为int或object。
2) 然后你可以做一个这样的函数并在项目点击时调用它并传递位置:
int lastItem = 0;
public void highlight(int clickedItem){
clickedItem.setBackground(//highlight color);
lastItem.setBackground(//unhighlight color);
lastItem = clickedItem;
}
3) 这将帮助您保存参考,并使处理上一个和当前项目变得容易。这只是我在处理此类案件时使用的一种方法。你必须使用这种方法。
希望对您有所帮助。