更改ExpandableListView项的颜色

时间:2011-07-10 23:18:09

标签: android expandablelistview simplecursoradapter

...通过使用游标从sql db中的三个不同列中选择单个(无限)行。第一列包含id。第二列包含净重,第三列包含实际重量。数据库中有更多列,但前面的列是唯一相关的列。

接下来我需要拿两个数字做一些简单的算术......(简单,不是问题)然后......

如果行包含的实际重量小于净重的15%,请将此项的expandableListView背景变为红色。如果不是绿色或紫色或粉红色或其他什么!

这是我的特色:

链接到 sql数据库 ExpandableListView。

simpleCursorTreeAdapter

这是我发现的:

我已经阅读了几个不同的教程,androiddocs,q& a's,它们都指向getGroupView()。所有教程的问题是:适配器是从 BaseExpandableListAdapter 扩展而来的。不幸的是,我已经走了几次这条路。我正在使用sql lite数据库。

但是,我注意到 SimpleCursorTreeAdapter扩展了BaseExpandableAdapter 。所以,应该有办法让这项工作。

问题:

我需要找到一种使用getGroupView()循环遍历各个位置的方法。与遍布网络的tutorial不同,我的数据来自数据库,我没有使用复选框。

我可以使用groupView成功地将所有项目变为绿色或红色,但是没有办法通过一个return语句执行我需要的操作。!

我应该注意哪些想法?我想推迟发布代码直到我感兴趣。

2 个答案:

答案 0 :(得分:0)

转到此处:Android: Access TextView inside Child of ExpandableListViewActivity并根据sql数据库中的数据设置从适配器获取视图的颜色。

然后在适配器上调用notifyDataSetChanged()以强制再次获取视图,如果sql db已更改,将显示其新颜色。

答案 1 :(得分:0)

这是设置群组指标的有效方法

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_empty="true" >
<layer-list>
    <item
        android:left="0dp"
        android:right="3dp"
        android:top="20dp"
        android:bottom="20dp"
        android:drawable="@drawable/ic_arrow_down">
    </item>
</layer-list>

<item
android:state_expanded="false" >
<layer-list>
    <item
        android:left="0dp"
        android:right="3dp"
        android:top="20dp"
        android:bottom="20dp"
        android:drawable="@drawable/ic_arrow_up">
    </item>
</layer-list>
</item>