我正在开发一个具有项目列表视图的Android应用程序。从sqlite数据库查询那些列表视图记录。这是列表视图实现的代码:
DataBaseHelper myDbHelper = new DataBaseHelper(null);
myDbHelper = new DataBaseHelper(this);
private static final String fields[] = {"c"};
int[] names = new int[] {R.id.name};
client1 = (ListView)findViewById(R.id.list1 );
String sql = "SELECT sno,a,b,c,d FROM (SELECT com.sno, com.a, com.b com.c,cd.d from table1 mem inner join table2 cd on mem.e=cd.e inner join table3 com on com.b = mem.b where mem.e =14445 AND a is NULL UNION SELECT com.sno, com.a, com.b,com.c,cd.d from table1 mem inner join table3 com on com.b = mem.b inner join table2 cd on mem.e=cd.e where mem.e =14445 AND a is NOT NULL) a group by a,b;";
Cursor cdata = myDbHelper.getView(sql);
SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this,R.layout.list1, cdata, fields,names );
client1.setAdapter(adapter2);
其中list1.xml是:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/MainLayout"
android:padding="5px">
<TextView
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="12sp"
android:textColor="#104082"
android:textStyle="bold"
android:layout_weight="1"
/>
</LinearLayout>
这里我的问题是通过改变列表视图项的文本样式来区分具有'a'= null和'a'= notnull的数据记录来自同一个list1.xml .... 我可以通过在查询中提供任何文本样式属性来区分sql查询中的文本样式吗?
请帮我提供示例代码/链接......提前致谢
答案 0 :(得分:2)
你必须定义一个自定义列表适配器,你必须在其中定义getitemview方法,你可以通过膨胀(或以编程方式更改)项目的布局,比如list1_null.xml或list1_notnull.xml
如果您需要的不仅仅是显示值(甚至更改颜色),您还必须重新定义自定义适配器。
来自android api的ListAdapter示例:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List4.html
答案 1 :(得分:2)
您可以使用ListView的CustomAdapter执行此操作。由于View是从自定义数据对象创建的,它包含了所有游标结果。 您可以检查a是否为null并且textview具有不同的文本样式
检查this练习以获取自定义适配器