2016-09-19 1 views
0

У меня есть listview, который находится в CustomAdapter, у меня есть элемент управления ListView, поэтому, когда пользователи щелкают по строке, рядом с ним появляется небольшая галочка. Моя проблема в том, что если вы прокрутите список ListView, а затем вернитесь, CheckMark исчезнет или он забудет, какой элемент нажал. Это изображение enter image description hereAndroid ListView сохраняет элементы onClick in adapter

Как вы можете видеть, изображение правильно отображается, когда нажимается элемент, но если вы прокрутите вниз, то снова изображение исчезнет. Это то, что у меня в ListView

@Override 
    public View getView(int position,View convertView,ViewGroup parent) { 
     final ViewHolder holder; 
    if(convertView==null){ 
     holder = new ViewHolder(); 
     inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.from(c).inflate(R.layout.mylists, null); 
     // Initialize 
     holder.textView=(TextView) convertView.findViewById(R.id.textView); 


     binding.list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

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

       holder.selected_genres = (ImageView) view.findViewById(R.id.selected_genre); 
       holder.selected_genres.setVisibility(View.VISIBLE); 
      } 

     }); 


      convertView.setTag(holder); 
    }else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
     lists= mylist.toArray(new String[0]); 

     holder.text1.setText(lists[position]); 

     return convertView; 
    } 
+0

Опубликовать весь файл адаптера со всеми переопределенными методами. –

ответ

1

Вы должны следить за которых являются «отдельные» элементы ..

Там много возможных решений проблемы, один должен создать (тот же размер, что и список элементов), который начинается со всех фальсов, и когда вы выбираете элемент в позиции (внутри onItemClick), установите значение в этой позиции равным true .. и затем, когда вы создаете представление (внутри getView), проверьте это значение и покажите (или нет) галочку.