动态隐藏ListView中的文本 - 并不总是有效

时间:2012-02-07 10:03:06

标签: android listview

如果TextView对象里面没有文本,我正在尝试将TextView对象设置为在ListView行中消失。

@Override
public View getView(int position, final View convertView, ViewGroup parent) {

    View row = convertView;

    if (row == null) {
        final LayoutInflater inflater = getLayoutInflater();
        row = inflater.inflate(R.layout.members, parent, false);
    }

    final TextView header = (TextView) row.findViewById(R.id.listHeader);
    header.setText(parsedList.get(position).header);

    final TextView footer = (TextView) row.findViewById(R.id.listDescription); 

    if(parsedList.get(position).footer.length() == 0) {
        footer.setVisibility(View.GONE);
    } else {
        footer.setText(parsedList.get(position).footer);
    }

    return row;
}

清单:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
    <TextView
    android:id="@+id/listHeader"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text=""
    android:textAppearance="?android:attr/textAppearanceLarge" android:layout_marginLeft="12dp" android:layout_marginRight="12dp" android:layout_marginTop="6dp" android:layout_marginBottom="6dp"/>
    <TextView
    android:id="@+id/listDescription"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text=""
    android:textAppearance="?android:attr/textAppearanceSmall" android:layout_marginBottom="6dp" android:layout_marginLeft="24dp" android:layout_marginRight="12dp"/>

</LinearLayout>

当Activity加载时,一切都按原样显示(大部分时间)。但是,当我旋转屏幕时,一些页脚TextView对象会从屏幕上消失。即使我在运行调试器时,也永远不会调用footer.setVisibility(View.GONE);

同样在我的清单中,我为活动设置了android:configChanges="orientation|keyboardHidden"

编辑:创建活动时也很少发生此问题。但是它总是出现在屏幕旋转上。

3 个答案:

答案 0 :(得分:1)

替换为此。

if(parsedList.get(position).footer.length() == 0) {
        footer.setVisibility(View.GONE);
    } else {
        footer.setText(parsedList.get(position).footer);
        footer.setVisibility(View.VISIBLE);
    }

答案 1 :(得分:0)

在Activity中覆盖此方法:

 @Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

答案 2 :(得分:0)

您是否尝试在if语句中使用getText()。length()?

if(parsedList.get(position).footer.length() == 0)