这是我的问题:
我有一个带有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);
}
答案 0 :(得分: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方法代码,亲爱的。
答案 1 :(得分:0)
这是由于列表项目的回收。只需跟踪您要在列表中将其设置为“可见”的图像的项目。在CustomAdapter中,尝试检查当前索引是否在列表中。如果没有将其设置为GONE,则可见。