2016-02-16 3 views
0

у меня есть что-то вроде этого, как мой item_row для ListViewView.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. Используйте равный() метод на непустую строке вместо:

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

Спасибо. Работал как шарм. : D – Eduvm

-1

Вы сравниваете неправильно струны, когда вы делаете что-то вроде этого:

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

вы сравниваете ссылки и это не является допустимым способом проверки равенства между объектами ...

Quick Fix:

заменить

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

для

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

Спасибо. Принял Дуга Стивенсона, потому что был первым. – Eduvm

Смежные вопросы