相同的文本在 ListView 中反复显示

The same text displaying over and over in 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;
}
}

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

你应该给出位置,每次你设置 [0][0] 都会 return 每次都相同的值,做这样的事情。

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;
}

您可以使 datos 成为数组列表,例如:ArrayList<String> 并使用 yourList.add() 添加元素。然后在适配器中将文本设置为 TextViewtitulo.setText(yourList.get(i)。 希望对您有所帮助!

我找到了解决方案!,而不是

    titulo.setText(datos[i][0]);
    imagen.setImageResource(datosImg[i]);

我写了:

    titulo.setText(datos[0][0]);
    imagen.setImageResource(datosImg[i]);

这意味着它只显示1个文本,但另一个显示一个文本,然后转到下一个。感谢您的帮助!