Ad esempio, per creare un layout alternativo in ListView che utilizza diversi colori alternativi:
<LinearLayout
android:id="@+id/view1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/textview_publish_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</TextView>
</LinearLayout>
Posso impostare il colore nel metodo getView:
MyActivity.this.findViewById(R.id.view1).setBackgroundColor(position%2=0?Color.RED.Color.BLUE);
Ma preferirei copiare e posizionare lo stesso file di layout:
row_style1.xml
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF0000"
android:orientation="vertical">
<TextView
android:id="@+id/textview_publish_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</TextView>
</LinearLayout>
row_style2.xml
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#0000FF"
android:orientation="vertical">
<TextView
android:id="@+id/textview_publish_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</TextView>
</LinearLayout>
e quindi gonfia layout diversi con il metodo getView:
view=LayoutInflater.from(MyFragment.this.getActivity()).inflate(i%2==0?R.layout.row_style1:R.layout.row_style2,null);
Penso che sia più gestibile perché separa più aspetti di stile dal codice, specialmente quando ci sono più stili diversi tra parti diverse, ad esempio:
findViewById(R.id.view1).setBackgroundColor(position%2=0?Color.RED.Color.BLUE);
findViewById(R.id.view2).setBackgroundColor(position%2=0?Color.YELLOW.Color.GREEN);
che può essere semplificato gonfiando diversi layout. È buona o cattiva pratica farlo?