0

これが私の問題です:

最初は GONE に設定されている ImageView を含む ListView がありますが、カスタム アダプターでいくつかの処理を行った後、それを表示に設定します。

私の問題は、リストの最初の要素を選択すると、4 つの項目ごとにそのイメージが VISIBLE に設定されることです。

私は自分自身を説明したことを願っています。ご不明な点がございましたら、お気軽にお問い合わせください。

編集してコードを追加します。私はスペイン人なので、一部はスペイン語です。

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 に答える