2015-07-06 5 views
1

У меня есть listview с CheckedTextView. Я хочу, чтобы при выборе элемента добавить его значение в список и при снятии выделения удалите значение из списка. Я не знаю, почему я не мог получить точную ценность. Заранее спасибо ........Android listview with checkedtextview

Вот мой код

 listview.setOnItemClickListener(new OnItemClickListener() { 

          @Override 
          public void onItemClick(AdapterView<?> parent, 
            View view, int position, long id) { 



           CheckedTextView ctv=(CheckedTextView)view.findViewById(R.id.addonsItem); 

          if (ctv.isChecked()) { 

           Temp.addonsIdList.add(addonsiDList.get(position)); 
           Temp.addonsNameList.add(addonsList.get(position)); 
           Temp.addonsPriceList.add(addonsPriceList.get(position)); 
           ctv.setChecked(false); 



          }else{ 

           Temp.addonsIdList.remove(addonsiDList.get(position)); 
           Temp.addonsNameList.remove(addonsList.get(position)); 
           Temp.addonsPriceList.remove(addonsPriceList.get(position)); 
           ctv.setChecked(true); 



          } 

адаптер GetView код

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

    if (convertView == null) { 
     convertView = LayoutInflater.from(getContext()).inflate(
       R.layout.addons_text, parent, false); 
     CheckedTextView checkTV=(CheckedTextView)convertView.findViewById(R.id.addonsItem); 

     checkTV.setText(Temp.addonsName.get(position));     
    } 
    return convertView; 
} 
+0

ли изменения ваш выбор при прокрутке? – Amsheer

+0

есть. иногда приложение разбилось. – Faravy

+0

Где находится код getView адаптера? – Amsheer

ответ

0

Попробуйте

Вы должны реализовать еще часть первой, как следующие

ViewHolder holder; 

    if (convertView == null) { 
    holder = new ViewHolder(); 
      convertView = LayoutInflater.from(getContext()).inflate(
        R.layout.addons_text, parent, false); 
      holder.checkTV=(CheckedTextView)convertView.findViewById(R.id.addonsItem); 


    convertView.setTag(holder);    
     }else{ 
    holder = (ViewHolder) convertView.getTag(); 
    } 
    holder.checkTV.setText(Temp.addonsName.get(position)); 

А затем создать класс

class ViewHolder { 
      CheckedTextView checkTV; 
} 

Edit 1:

Для вашего вопроса прокрутки вам необходимо следовать инструкциям.

Step 1. Добавить выбранное значение строки в ArrayList

Step 2. в вашем GetView добавить одно условие

if(yourArrayList.contains(selected_value)){ 
holder.checkTV.setChecked(true); 
}else{ 
holder.checkTV.setChecked(false); 
} 
+0

Я также пробовал это. Но проблема в том, что я выбираю один элемент, но отображает выбранный другой элемент. – Faravy

+0

Я знаю это. Поэтому добавьте комментарий в свой вопрос. У вас есть поле ID? – Amsheer

+0

Поле идентификатора означает? – Faravy