【问题标题】:Can i find an expandablelistview item based on text我可以根据文本找到可扩展列表视图项目吗
【发布时间】:2011-05-26 20:45:16
【问题描述】:
这个sudo代码可以吗?
for (all children in my custom expandable list) {
if (childItemText.equals("This string") {
viewWithTextIWant.setBackgroundResource(R.color.blue)
}
}
我不知道如何编码。如果您需要任何说明,请告诉我。
【问题讨论】:
标签:
java
android
expandablelistview
【解决方案1】:
我用我的应用做了类似的事情。我查看了 Android Developer 站点上的 ExpandableListView 小部件。它似乎没有任何 get 方法可以让您比较 ExpandableListView 中项目的字符串值。
你需要做的是创建你自己的字符串数组来保存你想要的字符串值。然后使用ExpandableListView 的get 方法返回所选项目的位置并将其与您的字符串数组进行比较。
换句话说,get 方法将返回值"i"。使用myStringArray[i].equals("This string") 比较字符串值。
【讨论】:
-
@yellavon:ExpandedListView 有一些您可以使用的“onclick”侦听器。 This 可能是您正在寻找的那个。您可以将代码放入该侦听器的 onChildClick 函数中。
【解决方案2】:
您的 Adapter 类中的 getChildView 似乎是一项任务。
我对 ExpandableListView 中的组做了同样的事情:
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
String groupText = (String) ((Map<String,?>) mGroupData.get(groupPosition)).get(KEY);
View v = groupText.startsWith(SEARCH_TERM) ?
mInflater.inflate(R.layout.layout_1, null) : mInflater.inflate(R.layout.layout_2, null);
TextView tv = (TextView) v.findViewById(R.id.mytext);
tv.setText(groupText);
return v;
}
警告!这段代码没有优化,它膨胀了每一个项目,这很昂贵。就我而言,我并不担心,因为我的 ExpandableListView 有一些项目