Android 带有自定义适配器的View.setVisibility(View.VISIBLE)

Android 带有自定义适配器的View.setVisibility(View.VISIBLE),android,listview,custom-adapter,custom-view,Android,Listview,Custom Adapter,Custom View,我有类似这样的东西作为列表视图的项目行 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal">

我有类似这样的东西作为列表视图的项目行

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="horizontal">

    <View
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:background="@drawable/status_1"
        android:id="@+id/status1"
        android:visibility="gone"/>

    <View
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:background="@drawable/status_2"
        android:id="@+id/status2"
        android:visibility="gone"/>

    <View
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:background="@drawable/status_3"
        android:id="@+id/status3"
        android:visibility="gone"/>

</LinearLayout>
现在,如果满足某些条件,我试图使状态可见

    if (pedido.getAberto() == "S") {

        status1.setVisibility(View.VISIBLE);

    }

    if (pedido.getCancelado() == "S") {

        status2.setVisibility(View.VISIBLE);

    }

    if (pedido.getEnviado() == "S") {

        status3.setVisibility(View.VISIBLE);

    }
但是,即使对象不满足条件,所有直线都将变得相等

    if (pedido.getAberto() == "S") {

        status1.setVisibility(View.VISIBLE);

    }

    if (pedido.getCancelado() == "S") {

        status2.setVisibility(View.VISIBLE);

    }

    if (pedido.getEnviado() == "S") {

        status3.setVisibility(View.VISIBLE);

    }

有什么提示吗?

您不应该使用==来比较Java中的字符串。改为对非空字符串使用equals()方法:

if ("S".equals(pedido.getAberto())) {
    status1.setVisibility(View.VISIBLE);
}

执行以下操作时,字符串比较错误:

 if (pedido.getAberto() == "S") {
您正在比较引用,这不是验证对象之间相等性的有效方法

快速修复:

替换

 if (pedido.getAberto() == "S") {
为了


谢谢工作很有魅力汉克斯。接受道格·史蒂文森的回答是因为他是第一个。
if ("S".equalsIgnoreCase(pedido.getAberto())) {