2014-02-17 2 views
0

Я новичок в android dev, актуально Я веб-разработчик. И вопрос подобен классам html + css.Android design practice - switch view

В моем приложении у меня есть простой listView с пользовательским представлением строк. Для разных состояний строки мне нужно переключить многие дочерние элементы строки, такие как цвет, цвет фона, видимость некоторых элементов.

Курс я могу сделать это в коде моего CustomArrayAdapter. Но это похоже на грязный трюк.

Как я могу сделать это «красивым»? Имеет ли API-интерфейс Android что-то похожее на классы в HTML?

public View getView(int position, View convertView, ViewGroup parent) { 
    // ... 
    Integer items_count = merc.getItemsCount(); String item_count_label = ""; 
    if(0 < items_count){ 
     item_count_label = String.valueOf(items_count); 
    } else { 
     item_count_label = ""; 
    } 
    countTextView.setText(item_count_label); 

    return rowView; 
} 

<TextView 
    android:id="@+id/label" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Item label" 
    android:focusable="false" 
    android:textSize="18dp" 
    android:textIsSelectable="true"> 
</TextView> 
<TextView 
    android:id="@+id/profit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="" 
    android:textSize="12dp" 
    android:textColor="#00aa00" 
    android:layout_weight="1" 
    android:layout_marginLeft="15px"> 
</TextView> 
<TextView 
    android:id="@+id/count" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="6" 
    android:textSize="18dp" > 
</TextView> 

+0

Можете ли вы показать свои коды? – Raptor

+0

Теперь это очень просто. https://github.com/Kein1945/LumiRoMerchantsAndroid. Файлы src/com/lumiro/merchantmonitor/view/MerchantArrayAdapter.java И res/layout/merchant_row.xml. Но позже мне нужно добавить еще несколько элементов. – Kein

+0

Пожалуйста, вставьте соответствующие коды в вопрос, а не только ссылку. – Raptor

ответ

1

Обычно вы бы переопределить getViewTypeCount() и возвращает количество различных строк "типов", что ваш ListView может иметь (скажем, типа N), и переопределить getItemViewType() вернуться значение от 0 до (N - 1). Затем в getView() вы можете позвонить getItemViewType(position) и switch над возвращаемым значением, чтобы раздуть правильный макет строки и сделать все, что вам нужно.

Я предлагаю вам посмотреть это видео: The World of ListView