2015-08-28 2 views
0

Я пытаюсь выяснить, можно ли изменить вид одного элемента в Listview на основе свойств объекта, в этом случае цвет фона и текст.Настроить элемент списка на основе данных объекта

Объект представляет собой трамвай с цвет фона, цвет текста, номер трамвая.

я думал что-то вроде этого

enter image description here

Использование является AutoCompleteTextView, где пользователь может ввести номер, и приложение будет перечислить все возможные совпадения.

Я использую синтаксический анализ для хранения объектов данных в базе данных, а аспект хранения/извлечения не является проблемой.

я могу это сделать, очень некрасиво, с

TextView line = (TextView) convertView.findViewById(R.id.transportline); 


     if(ctrlListItems.get(position).getLine().equals("1")){ 
      line.setBackgroundColor(Color.BLUE); 
     } 

Но я скорее хочу использовать XML-файлы, такие как

line.setBackground(drawable/line_white); 

где

line_white

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" > 
<!-- view background color --> 
<solid 
    android:color="@color/tram_white_bg" > 
</solid> 

<!-- view border color and width --> 
<stroke 
    android:width="1dp" 
    android:color="@color/tram_border_gray" > 
</stroke> 

<!-- The radius makes the corners rounded --> 
<corners 
    android:radius="2dp" > 
</corners> 

Любые предложения приветствуются

+0

Привет! Попробуйте с помощью line.setBackground (getResources(). GetDrawable (R.drawable.line_white); – jekeyeke

ответ

0

я решил портировать информацию цвета для текста/цвета фона для объекта синтаксического анализа данных, так как я, скорее всего, буду портировать приложение к прошивке в некотором более поздний момент в любом случае. Они хранятся как строки в базе данных анализа как «#ffffff»

Я использую форму, пригодную для рисования, как стандартную раскладку для числа.

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" > 
<!-- view background color --> 
<solid 
    android:color="@color/tram_white_bg" > 
</solid> 

<!-- view border color and width --> 
<stroke 
    android:width="1dp" 
    android:color="@color/tram_border_gray" > 
</stroke> 

<!-- The radius makes the corners rounded --> 
<corners 
    android:radius="2dp" > 
</corners> 

и в моем обычае ArrayAdapter я могу избежать много если/случая, чтобы определить цвет, что делает приложение проще масштабировать с добавлением нескольких объектов.

GradientDrawable shape = (GradientDrawable)holder.lineNumber.getBackground(); 
    shape.setColor(Color.parseColor(line.getBgColor())); 
    holder.lineNumber.setTextColor(Color.parseColor(line.getTextColor())); 

Вырабатывает этот результат

this

Смежные вопросы