2014-01-27 2 views
0
final SimpleAdapter adapter = new SimpleAdapter(getActivity(), 
        itemlist, R.layout.listview_custom_view_sales_products, 
        new String[] { "Number", "item_name", "qty" }, new int[] { 
          R.id.number, R.id.Name, R.id.value }) { 

       public View getView(int position, View convertView, ViewGroup parent) { 
        View view = super.getView(position, convertView, parent); 

        HashMap<String, String> obj = (HashMap<String, String>) getListView().getAdapter().getItem(position); 



       for (String x : added_items) { 

         if (String.valueOf(x).equals(obj.get("item_name").toString())) { 

          Log.i("sdsds", "working"); 

          view.setBackgroundColor(Color.BLUE); 

         } 

        } 

        return view; 

       }; 
      }; 

Здесь я использовал приведенный выше код для цветовых элементов в соответствии с пунктами, включенными в addeditem (это массив) .Но моя проблема заключается в том, что она меняет цвет другие строки, которые не были добавлены в мой wArrayList.Android Изменить цвет список просмотра Пункта

+0

Вы перебор всего списка элементов данных для каждого ракурса. Рано или поздно вы найдете тот, который соответствует условию. Вам нужно получить элемент данных, соответствующий параметру 'position'. Проверьте ответ DiegoAlts ниже. – gunar

ответ

2

Вы должны сделать:

  public View getView(int position, View convertView, ViewGroup parent) { 
       View view = super.getView(position, convertView, parent); 
       String word=yourArrayOfStrings[position]; 
       if(word.equals("item_...")){ 
        view.setBackgroundColor(Color.BLUE); 

       } 
       return view; 
      } 
+0

Добавьте инструкцию else, в которой вы устанавливаете фон в значение null или какое-либо значение по умолчанию. В противном случае, когда представление будет переработано, цвет фона останется синим. – gunar

+0

На самом деле мой массив имеет только значения элементов, которые должны быть окрашены в элемент списка. – user2771059

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