Ho una ListView con un ArrayAdapter associato che visualizza i suoi contenuti in diverse attività. Purtroppo è diventato necessario ora che il mio ListView in una delle impostazioni non mostra tutti i suoi elementi, ma solo quelli in cui "proprietà" non è impostata su true. Vorrei evitare di utilizzare due ArrayAdapter con contenuti diversi, poiché in seguito ho dovuto in qualche modo mantenerli sincronizzati. Ho cercato in questo modo (questo metodo ora solo presuppone che GetView viene chiamato nel ambiente dove vogliamo nascondere alcuni elementi):Nascondi riga da ListView senza occupare spazio
public View getView(int position, View convertView, Context context) {
....
if(!arrayitems[position].isProperty()) { //arrayitems is the underlying array
convertView.setVisibility(View.VISIBLE);
}
else {
convertView.setVisibility(View.GONE);
}
return convertView;
}
questo funziona, però ho ottenere una riga bianca se l'elemento ha isProperty == vero. Mi piacerebbe rendere la riga invisibile nel senso, che non occupi più spazio. È possibile?
Il file XML utilizzato per convertView assomiglia a questo:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/text_item_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="4dp"
android:maxLines="1"
android:ellipsize="none"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/text_item_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
android:textStyle="bold" />
</LinearLayout>
<TextView android:id="@+id/text_item_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="12sp"
android:maxLines="3"
android:ellipsize="none" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/text_item_rating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="4dp"
android:textSize="10sp" />
<TextView
android:id="@+id/text_item_voted"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10sp" />
</LinearLayout>
</LinearLayout>
ho cercato di riprodurre tutti i Android: layout_height = "wrap_content" con "fill_parent", ma non ha cambiato nulla ...
Grazie!
io non capisco, il la proprietà booleana è la stessa per tutti gli elementi in quanto è un attributo all'adattatore. Come poteva sapere quale riga nascondere? –
scusate, isProperty() ovviamente è un metodo di elementi nell'array – user1809923
se avete ancora problemi si prega di controllare la mia risposta funzionerà sicuramente. –