Non riesco a capire ... Come impostare alcune proprietà di visualizzazione solo se il campo variabile non è nullo?
Per esempioAssociazione dati: imposta proprietà se non è nulla
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="item"
type="com.test.app.Item" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_margin="16dp"
android:src="@{item.getDrawable()}"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginEnd="16dp"
android:layout_marginLeft="72dp"
android:layout_marginRight="16dp"
android:layout_marginStart="72dp"
android:layout_toLeftOf="@id/action"
android:layout_toStartOf="@id/action"
android:orientation="vertical">
<TextView
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:textColor="@color/black_87"
android:textSize="16sp"
android:text="@{item.getTitle()}"/>
<TextView
android:id="@+id/text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autoLink="web|email"
android:linksClickable="false"
android:singleLine="true"
android:textColor="@color/black_54"
android:textSize="14sp"
android:text="@{item.getSubtitle()}"/>
</LinearLayout>
</RelativeLayout>
</layout>
qualche campo della voce può essere nullo e non voglio chiamare i metodi di vista del layout inutilmente. E non otterrò NullPointerException
. Come posso impostare la proprietà solo se non è nulla?
P.S. Scusa per l'inglese.
Lo so. Come ho capito è impossibile non chiamare il metodo in Visualizza se il valore è nullo ?. –
Mi dispiace, non sono sicuro di cosa stai chiedendo qui. Stai cercando di mantenere il valore precedente se il nuovo valore era nullo? Non sono sicuro che questo sia un buon modo per ottenerlo attraverso l'associazione dei dati. Il nuovo bind di dati bidirezionale potrebbe essere usato immagino impostando il valore di qualche oggetto (possibilmente altro) ogni volta che non è nullo. Ma dubito che questo sia un buon modo di affrontarlo. –
Un modo sarebbe quello di dividere la variabile utilizzata, invece, avere uno per ogni proprietà. Di tipo String invece di Item. –