2016-02-16 57 views
0

我有這樣的事情作爲我item_row的列表視圖View.setVisibility(View.VISIBLE)與自定義適配器

<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> 

然後,我有這個在我的適配器。

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

    View v; 

    if (convertView == null) { 

     v = parent.inflate(context, R.layout.itens_pedidos, null); 

    } 

    else { 

     v = convertView; 

    } 

    Pedido pedido = (Pedido) getItem(position); 

    // Define widgets 
    View status1 = (View) v.findViewById(R.id.status1); 
    View status2 = (View) v.findViewById(R.id.status2); 
    View status3 = (View) v.findViewById(R.id.status3); 
    ... 

    ... 

現在,我試圖讓狀態#可見,如果滿足一定條件

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

     status1.setVisibility(View.VISIBLE); 

    } 

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

     status2.setVisibility(View.VISIBLE); 

    } 

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

     status3.setVisibility(View.VISIBLE); 

    } 

然而,所有的線條都變得平等,即使對象不符合條件

有小費嗎?

回答

1

您不應該使用==比較Java中的字符串。使用equals()方法在非空字符串代替:

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

感謝。像魅力一樣工作。 :D – Eduvm

-1

您錯誤地比較字符串,當你做這樣的事情:

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

您比較的參考,這是不是一個有效的方法來驗證對象之間的平等......

快速修復:

更換

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

if ("S".equalsIgnoreCase(pedido.getAberto())) { 
+0

謝謝。接受道格·史蒂文森的回答是因爲第一次。 – Eduvm