Android ListView在适配器上保存项目onClick

时间:2016-09-19 15:05:43

标签: android listview android-adapter

我有一个Listview,它位于CustomAdapter中,我有ListView可点击,所以当用户点击一行时,旁边会出现一个小复选标记。我的问题是,如果你向下滚动ListView然后再回来CheckMark消失或它忘记了点击的项目。这是图像 enter image description here

正如您所看到的,当单击某个项目时图像会正确显示,但如果向下滚动则再向上,图像就会消失。这就是我在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;
    }

1 个答案:

答案 0 :(得分:1)

您需要跟踪哪些是&#34;已选择&#34;物品..

这个问题有很多可能的解决方案,一个是创建一个以所有falses开头的列表(与项目列表大小相同),当你选择某个位置的项目时(在onItemClick内),设置该位置的值为true ..然后在创建视图时(在getView内),检查该值并显示(或不显示)复选标记。