我有一个ListView与一个关联的ArrayAdapter在几个活动中显示其内容.不幸的是,现在有必要,我在其中一个设置中的ListView不显示其所有元素,只是没有将“属性”设置为true的元素.我想避免使用两个具有不同内容的ArrayAdapters,因为我以某种方式需要使它们保持同步.我尝试这样(这个方法现在只是假定在我们想要隐藏某些元素的设置中调用getView):
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; }
这个工作,但是如果元素的isProperty == true,我会得到一个白色行.我想让这一行在这个意义上看不见,它不再占用任何空间.那可能吗?
用于convertView的已使用的xml文件如下所示:
<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>
我试图重播所有的android:layout_height =“wrap_content”与“fill_parent”,但它没有改变任何东西…
谢谢!
解决方法
将列表视图的所有内容的可见性设置为GONE,然后将视图的可见性设置为Gone ….这将隐藏行而不占用空间…..它可以为我工作,即使我一直在寻找这个,但经过研究,我发现这个….
编辑1:设置视图到GONE的可见性就足够了.不需要设置子元素的可见性.