Android - Изменить TextStyle элементов ListView - PullRequest
0 голосов
/ 22 ноября 2011

Я разрабатываю одно приложение для 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, указав в запросе какие-либо атрибуты стиля текста?

Пожалуйста, помогите мне с примером кода / ссылки ...... Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

Вы можете сделать это, используя CustomAdapter для ListView. Поскольку представление создается из пользовательского объекта данных, который включает в себя все результаты курсора. Вы можете проверить, является ли значение null и имеет ли другой текстовый стиль для textview

Проверьте это упражнение для пользовательского адаптера

2 голосов
/ 22 ноября 2011

Вы должны определить пользовательский адаптер списка, и в нем вы должны определить метод getitemview, где вы раздуваете (или программно изменяете) макет элемента, скажем, list1_null.xml или list1_notnull.xml

Если вам нужно что-то большее, чем просто отображение значений (даже что-то вроде изменения цвета), вам придется переопределить пользовательский адаптер.

Пример ListAdapter с Android Android API: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List4.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...