2016-04-16 3 views
0

У меня есть ListView с пользовательским адаптером, и я хочу изменить цвет фона элемента. Я использовал этот код:Custom ListView изменение цвета предмета

@Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     final Holder holder = new Holder(); 
     final View rowView; 
     rowView = inflater.inflate(R.layout.program_list, null); 
     holder.tv = (TextView) rowView.findViewById(R.id.textView1); 
     holder.img = (ImageView) rowView.findViewById(R.id.imageView1); 
     holder.tv.setText(result[position]); 
     holder.img.setImageResource(imageId[position]); 
     rowView.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (position != 0) { 
        rowView.setBackgroundColor(Color.rgb(70, 190, 200)); 
       } 
      } 
     }); 
     return rowView; 
    } 

Он работает нормально, но мой вопрос - как я могу изменить следующий цвет элемента внутри функций onclick с зная, последний пункт не буду нажат (вызывая из оценки точности) ? (Если я нажимаю элемент в позиции 4, измените цвет фона позиции 5).

  rowView.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      // ? 
      } 
     }); 

Спасибо :)

+0

ссылка http://stackoverflow.com/questions/16453379/android-list-adapter-returns-wrong-position-in-getview – sasikumar

ответ

1

Если вы объявляете myListView как переменную в адаптере, и в вашем методе getView инициализировать его как

this.myListView = (ListView) parent; 

тогда вы получите позицию выбранного в данный момент в вашем onClick методом

int currPos = MyCustomAdapter.this.myListView(getPositionForView((View) view.getParent())); 

До этого момента я сам использовал этот код, и он работает. Теперь, в соответствии с Android Javadoc, следующее выражение должно дать следующий вид:

MyCustomAdapter.this.myListView(getChildAt(currPos + 1)). 

тогда Вы должны быть в состоянии делать то, что вы хотите с этой точки зрения, но я не проверял эту часть пока.

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