2015-05-25 3 views
1

Для моей ListView У меня есть этот ArrayAdapterArrayAdapter GetView положение не верно

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, android.R.id.text1, uas) { 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View item = super.getView(position, convertView, parent); 

      if(uas.size() > 0 && tinydb.getInt("selectedUA", 0) == position) { 
       item.setBackgroundColor(Color.GREEN); 
      } 

      return item; 
     } 
    }; 

Lets говорят selectedUA 3, поэтому он окрашивает третий индекс зеленый. Проблема в том, что первый индекс всегда окрашивается. Кажется, что значение позиции или что-то имеет ошибку. Может кто-нибудь мне помочь?

+1

возможно войти или распечатать tinydb.getInt («selectedUA», 0) значение внутри, если блок, чтобы увидеть, что она возвращает в точку. – Surely

ответ

3

попробуйте сбросить цвета по умолчанию для других строк, если условие ложно:

if(uas.size() > 0 && tinydb.getInt("selectedUA", 0) == position) { 
     item.setBackgroundColor(Color.GREEN); 
} else { 
     // e.g. 
     item.setBackgroundColor(Color.RED); 
} 
+0

Это сработало! спасибо – Phil

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