相同的文本在 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()
添加元素。然后在适配器中将文本设置为 TextView
和 titulo.setText(yourList.get(i)
。
希望对您有所帮助!
我找到了解决方案!,而不是
titulo.setText(datos[i][0]);
imagen.setImageResource(datosImg[i]);
我写了:
titulo.setText(datos[0][0]);
imagen.setImageResource(datosImg[i]);
这意味着它只显示1个文本,但另一个显示一个文本,然后转到下一个。感谢您的帮助!
我当前在我的 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()
添加元素。然后在适配器中将文本设置为 TextView
和 titulo.setText(yourList.get(i)
。
希望对您有所帮助!
我找到了解决方案!,而不是
titulo.setText(datos[i][0]);
imagen.setImageResource(datosImg[i]);
我写了:
titulo.setText(datos[0][0]);
imagen.setImageResource(datosImg[i]);
这意味着它只显示1个文本,但另一个显示一个文本,然后转到下一个。感谢您的帮助!