0

这是我的问题:

我有一个带有 ImageView 的 ListView,最初设置为 GONE,但在自定义适配器上做了一些事情后,将其设置为可见。

我的问题是,如果我选择列表的第一个元素,每四个项目也会将其图像设置为可见。

我希望我已经解释了自己。如果有任何疑问,请随时问我。

我编辑以添加一些代码。有些部分是西班牙语,因为我是西班牙语。

getView(): 视图 v = convertView;

        if (v == null) {
            LayoutInflater vi = (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.list_view_item, null);
        }
        final Oferta o = items.get(position);
        boolean comprado = false;
        if (o != null) {
                final ImageView image = (ImageView) v.findViewById(R.id.imageView1);
                TextView titulo = (TextView) v.findViewById(R.id.textView1);
                TextView precioAnterior = (TextView) v.findViewById(R.id.textView2);
                TextView precioNuevo = (TextView) v.findViewById(R.id.textView3);
                TextView fechaHasta = (TextView) v.findViewById(R.id.textView4);
                ImageView imageComprado = (ImageView) v.findViewById(R.id.imageView2);

                Drawable compra = this.getContext().getResources().getDrawable(R.drawable.comprada);


                for(int i = 0; i < MainActivity.tickets.size();i++)
                {


                    if((MainActivity.tickets.get(i).getOferta().getId()) == (o.getId()))
                    {   
                        System.out.println("tickets: " + MainActivity.tickets.get(i).getOferta().getId());
                        System.out.println("oferta: " + o.getId());
                        comprado  = true;
                        break;
                    }
                }

                if (comprado)
                {
                    imageComprado.setVisibility(View.VISIBLE);
                    comprado = false;
                }

                if (titulo != null) {
                      titulo.setText(o.getTitulo());    
                      }
                if(precioAnterior != null){
                    precioNuevo.setText(String.valueOf(new java.text.DecimalFormat("#.##").format(o.getPrecioNuevo()))+"€");    
                }
                if(precioNuevo != null){
                    precioAnterior.setPaintFlags(precioAnterior.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
                    precioAnterior.setText(String.valueOf(new java.text.DecimalFormat("#.##").format(o.getPrecioAnterior()))+"€");  
                }
                if(fechaHasta != null){
                    fechaHasta.setText("Cad.: " + o.getDisponibleHasta());  
                }
                if(image != null){
                     DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
                    .cacheInMemory()
                    .cacheOnDisc()
                    .build();
                 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getContext())
                    .defaultDisplayImageOptions(defaultOptions)
                    .build();



                 ImageLoader.getInstance().init(config);
                //imageLoader.init(ImageLoaderConfiguration.createDefault(getApplicationContext()));
                ImageLoader.getInstance().displayImage(o.getImagen(), image);
                      }   
4

2 回答 2

0

这是由于列表项的回收。只需跟踪要在列表中将其 imageView 设置为可见的项目。在您的 CustomAdapter 中,尝试检查当前索引是否在列表中。如果未将其设置为 GONE,则其他可见。

于 2012-10-08T13:41:01.110 回答
0

我的答案在下面试试这个代码并完成你的工作。

public View getView(int position, View convertView, ViewGroup parent) 
    {   
        try
        {
            View row = null;

            if (row == null) 
            {   
                LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                row = inflater.inflate(R.layout.custom_list_item, parent, false);

                // Get reference  
                imgIconView = (ImageView) row.findViewById(R.id.imgIcon);
                txtLabel = (TextView) row.findViewById(R.id.txtLable);
                txtLabel.setTypeface(genHelper.setFontFace("TektonPro-Bold.otf"),Typeface.BOLD);

                txtScore=(TextView) row.findViewById(R.id.txtScore);
                txtScore.setTypeface(genHelper.setFontFace("TektonPro-Bold.otf"),Typeface.BOLD);

            }else
            {
                row = (View) convertView;
            }
}

复制此代码并替换您自己的 getview 方法代码,它的工作亲爱的。

于 2012-10-08T13:14:39.780 回答