首页 > 解决方案 > 在 ListView 中一遍又一遍地显示相同的文本

问题描述

我当前在我的 ListView 中使用的 textView 一遍又一遍地显示,没有更改它的信息,但我不明白为什么,我能得到一点帮助吗?代码:

名为Principal.java的主要代码:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;

public class Principal extends AppCompatActivity {

ListView lista;

String[][]datos = {
        {"Mediciones del día"},
        {" "},
        {"Promedios del día"},
};

int [] datosImg = {R.drawable.celeste, R.drawable.rojo, R.drawable.verde};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_principal);

    lista = (ListView) findViewById(R.id.lvLista);

    lista.setAdapter(new Adaptador(this, datos, datosImg));
  }
}

我的适配器:

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; 
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class Adaptador extends BaseAdapter {

private static LayoutInflater inflater = null;

Context contexto;
String [][] datos;
int[] datosImg;

    public Adaptador (Context context, String [][] datos,int []imagenes)
{
    this.contexto = context;
    this.datos = datos;
    this.datosImg = imagenes;
    inflater = 
(LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
}

@Override
public View getView(int i, View convertView, ViewGroup parent) {

    final View vista = inflater.inflate(R.layout.elemento_lista, null);
    TextView titulo = (TextView) vista.findViewById(R.id.textView);
    ImageView imagen = (ImageView) vista.findViewById(R.id.imageView);

    titulo.setText(datos[0][0]);
    imagen.setImageResource(datosImg[i]);
    /*
    imagen.setTag(i);
    */
    /*
    imagen.setOnClickListener(new View.OnClickListener(){
      @Override
              public void onClick(View v){
         Intent visorImagen = new Intent(contexto, VisorImagen.class);
         visorImagen.putExtra("IMG", datosImg[(Integer)v.getTag()]);
         contexto.startActivity(visorImagen);
        }

    });
    */
    return vista;
}

@Override
public int getCount() {
    return datosImg.length;
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}
}

我一直在寻找解决方案很长时间,但我没有在网上找到任何东西。

标签: androidandroid-listview

解决方案


您应该在这里给出位置,每次设置 [0][0] 时都会返回相同的值,请执行以下操作。

public View getView(int i, View convertView, ViewGroup parent) {

    final View vista = inflater.inflate(R.layout.elemento_lista, null);
    TextView titulo = (TextView) vista.findViewById(R.id.textView);
    ImageView imagen = (ImageView) vista.findViewById(R.id.imageView);

    titulo.setText(datos[i][i]);
    imagen.setImageResource(datosImg[i]);
    /*
    imagen.setTag(i);
    */
    /*
    imagen.setOnClickListener(new View.OnClickListener(){
      @Override
              public void onClick(View v){
         Intent visorImagen = new Intent(contexto, VisorImagen.class);
         visorImagen.putExtra("IMG", datosImg[(Integer)v.getTag()]);
         contexto.startActivity(visorImagen);
        }

    });
    */
    return vista;
}

推荐阅读