Android 更改适配器中项目的背景

Android 更改适配器中项目的背景,android,list,listview,adapter,Android,List,Listview,Adapter,我想更改适配器中选定列表项的背景 列表适配器 问题是,当我选择列表的第一项时,第七项也被选中。我注意到有一种赞助人。当我选择第二项时,也会选择第八项,依此类推 假设列表中有10个项目,最初您将以白色存储所有项目的颜色 HashMap<Integer,Integer> mhashColorselected=new HashMap(); HashMap<Integer,Integer> mHashBtnVisibility=new HashMap(); for(i=0

我想更改适配器中选定列表项的背景

列表适配器 问题是,当我选择列表的第一项时,第七项也被选中。我注意到有一种赞助人。当我选择第二项时,也会选择第八项,依此类推


假设列表中有10个项目,最初您将以白色存储所有项目的颜色

 HashMap<Integer,Integer> mhashColorselected=new HashMap();
HashMap<Integer,Integer> mHashBtnVisibility=new HashMap();

  for(i=0;i<10;i++){
//Put Default Color of your All list item will be here 
mhashColorselected.put(i,R.color.white)

mHashBtnVisibility.put(i,View.Invisible);

} 

您需要在某个集合HashMap中使用特定位置的颜色值来维护所选项目的位置。如果我想在单击“选择”按钮后将其可见性设置为不可见?我试着用与背景色相同的方法来做,但当我写:viewHolder.select.setVisibility(mhashButtonSelected.get(position))时,我得到:“必须是可见、不可见、消失的一个”为此,您应该在HashMap中保持相同的like by标志,其中值应该类似于可见性。默认情况下不可见,并且您可以单击设置值,如mHashMap.put(position,View.Visible);这就是我试图做的,但是viewHolder.select.setVisibility(mhashButtonSelected.get(position));不work@Claudiu但你仍然可以从studio中构建应用程序。
 HashMap<Integer,Integer> mhashColorselected=new HashMap();
HashMap<Integer,Integer> mHashBtnVisibility=new HashMap();

  for(i=0;i<10;i++){
//Put Default Color of your All list item will be here 
mhashColorselected.put(i,R.color.white)

mHashBtnVisibility.put(i,View.Invisible);

} 
   @Override
            public View getView(final int position, View convertView, ViewGroup parent) {
                final Card card = getItem(position);

                final ViewHolder viewHolder;
                if (convertView != null) {
                    viewHolder = (ViewHolder) convertView.getTag();
                } else {
                    convertView = from(context).inflate(R.layout.card_item, parent, false);
                    viewHolder = new ViewHolder(convertView);
                    convertView.setTag(viewHolder);
                }


               viewHolder.select.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        viewHolder.cardLayout.setBackgroundColor(ContextCompat.getColor(context, R.color.md_grey_600));

    //Here we are storing Selected item By User 
         mhashColorselected.put(position,R.color.md_grey_600);
          mHashBtnVisibility.put(i,View.Visible);

        notifitydataSetChange();
                    }
               });


        //Here it's will take fault value or else it will set color as selected item 
        viewHolder.cardLayout.setBackgroundColor(ContextCompat.getColor(context, mhashColorselected.getValue(position)));


 if(View.VISIBLE==mHashBtnVisibility.get(position)){

 viewHolder.select.setVisibility(View.VISIBLE)
    }else{
 viewHolder.select.setVisibility(View.INVISIBLE)

    }



                return convertView;
            }