如何解决android中listview中删除重复位置的问题

如何解决android中listview中删除重复位置的问题,android,android-listview,Android,Android Listview,首次在listview中加载16项。 我只需要选择2个项目(红色按钮)。 但是当我滚动listview所有项目时,我显示了错误的11个选定项目 public View getView(final int position, View convertView, ViewGroup parent) { v = convertView; holder = new PlanetHolder(); if (convertView =

首次在listview中加载16项。 我只需要选择2个项目(红色按钮)。 但是当我滚动listview所有项目时,我显示了错误的11个选定项目

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

            v = convertView;
            holder = new PlanetHolder();
            if (convertView == null)
            {

                LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = inflater.inflate(R.layout.list_row, null);

                holder.btn=(Button)v.findViewById(R.id.btn1);

                holder.displayname = (TextView)v.findViewById(R.id.txt);

                if(selectedarray.get(position).equals("1"))
                {
                    holder.btn.setBackgroundColor(R.color.red);
                    holder.btn.setClickable(false);

                }
                holder.btn.setOnClickListener(new OnClickListener()
                {

                    @SuppressLint("ResourceAsColor")
                    @Override
                    public void onClick(View v)
                    {
                        // TODO Auto-generated method stub
                    }
                });
               v.setTag(holder);
            }
            else
                Log.d("else_position", "else_position= "+position);
            holder = (PlanetHolder) v.getTag();
            ItemList p = planetList.get(position);
            holder.displayname.setText(p.getU_name());

            return v;
        }

请写下其他部分

if (selectedarray.get(position).equals("1")) {
            holder.btn.setBackgroundColor(R.color.red);
            holder.btn.setClickable(false);
        } else {
            holder.btn.setBackgroundColor(R.color.white);
            holder.btn.setClickable(true);
        }
首先

第二,如果(convertView==null),请不要将其保存在
项下或
项下

在if和else阻塞后保留它

看这里

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

                v = convertView;
                holder = new PlanetHolder();
                if (convertView == null)
                {

                    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    v = inflater.inflate(R.layout.list_row, null);

                    holder.btn=(Button)v.findViewById(R.id.btn1);

                    holder.displayname = (TextView)v.findViewById(R.id.txt);


                   v.setTag(holder);
                }
                else
                 {
                   Log.d("else_position", "else_position= "+position);
                   holder = (PlanetHolder) v.getTag();
                 }

                ItemList p = planetList.get(position);
                holder.displayname.setText(p.getU_name());

                  if(selectedarray.get(position).equals("1"))
                    {
                        holder.btn.setBackgroundColor(R.color.red);
                        holder.btn.setClickable(false);

                    }
                    holder.btn.setOnClickListener(new OnClickListener()
                    {

                        @SuppressLint("ResourceAsColor")
                        @Override
                        public void onClick(View v)
                        {
                            // TODO Auto-generated method stub
                        }
                    });

                return v;
            }

我解决了我的问题

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

                v = convertView;
                holder = new PlanetHolder();
                if (convertView == null)
                {

                    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    v = inflater.inflate(R.layout.list_row, null);

                    holder.btn=(Button)v.findViewById(R.id.btn1);

                    holder.displayname = (TextView)v.findViewById(R.id.txt);

                    if(selectedarray.get(position).equals("1"))
                    {
                        holder.btn.setBackgroundColor(R.color.red);
                        holder.btn.setClickable(false);

                    }
                    holder.btn.setOnClickListener(new OnClickListener()
                    {

                        @SuppressLint("ResourceAsColor")
                        @Override
                        public void onClick(View v)
                        {
                            // TODO Auto-generated method stub
                        }
                    });
                   v.setTag(holder);
                }
                else
                    Log.d("else_position", "else_position= "+position);
                holder = (PlanetHolder) v.getTag();
                ItemList p = planetList.get(position);
                holder.displayname.setText(p.getU_name());
                if(selectedarray.get(position).equals("1"))
                    {
                        holder.btn.setBackgroundColor(R.color.red);
                        holder.btn.setClickable(false);

                    }
               else
               {
                        holder.btn.setBackgroundColor(R.color.white);
                        holder.btn.setClickable(true);
                }
                return v;
            }

第一次加载真正的红色按钮,但在显示11项红色按钮后,我会滚动列表视图。我不需要11项红色按钮。请在适配器中使用viewholder
 public View getView(final int position, View convertView, ViewGroup parent)
    {

                v = convertView;
                holder = new PlanetHolder();
                if (convertView == null)
                {

                    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    v = inflater.inflate(R.layout.list_row, null);

                    holder.btn=(Button)v.findViewById(R.id.btn1);

                    holder.displayname = (TextView)v.findViewById(R.id.txt);

                    if(selectedarray.get(position).equals("1"))
                    {
                        holder.btn.setBackgroundColor(R.color.red);
                        holder.btn.setClickable(false);

                    }
                    holder.btn.setOnClickListener(new OnClickListener()
                    {

                        @SuppressLint("ResourceAsColor")
                        @Override
                        public void onClick(View v)
                        {
                            // TODO Auto-generated method stub
                        }
                    });
                   v.setTag(holder);
                }
                else
                    Log.d("else_position", "else_position= "+position);
                holder = (PlanetHolder) v.getTag();
                ItemList p = planetList.get(position);
                holder.displayname.setText(p.getU_name());
                if(selectedarray.get(position).equals("1"))
                    {
                        holder.btn.setBackgroundColor(R.color.red);
                        holder.btn.setClickable(false);

                    }
               else
               {
                        holder.btn.setBackgroundColor(R.color.white);
                        holder.btn.setClickable(true);
                }
                return v;
            }