android - 在 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] 时都会返回相同的值,请执行以下操作。
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;
}
推荐阅读
- python - 从python中的编码像素收缩边界框
- java - 无法执行 Single.create 中的任何内容 - rxjava
- django - 重置查询集后,Django Rest Framework 不过滤
- docker - 可以使用 taskset 或 systemd CPUAffinity=0 将 dockerd 和 containerd 固定到核心 0
- javascript - 我的下拉菜单不起作用(react.js)
- python - 删除像素值为零的栅格
- pandas - 每当两个同时的行值为空时,创建一个具有迭代句子计数的新列(表示找到一个新句子)
- visual-studio-code - 如何修复 Visual Studio Code 中的代码折叠
- python - wxpython工具栏菜单键盘导航
- php - Cloudflare 正在缓存我的登录页面。我应该在 Cloudflare 级别还是应用程序级别,或两者都缓解这种情况?