这段代码对我有用,就是当我尝试将信息添加到列表时,它看起来像一行,但如果我尝试添加更多信息而不是显示为另一行,则第一行更改为新信息。那么为什么会这样呢?
主类调用Costo Productos .java:
public class Costo_Productos extends AppCompatActivity {
Button agregar_articulo_btn;
ListView ListaCompras;
private ArrayList<lista_compra_informacion> array;
private Lista_compra_adapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_costo__productos);
agregar_articulo_btn = (Button)findViewById(R.id.agregar_btn);
ListaCompras = (ListView)findViewById(R.id.lista_de_compras);
array = new ArrayList<lista_compra_informacion>();
adapter = new Lista_compra_adapter(this,
R.layout.custom_lista_de_compras, array);
char bandera='f';
Intent intent2 = getIntent();
Bundle extras2 = intent2.getExtras();
if (extras2!=null) {
bandera = extras2.getChar("Bandera");
}
if(bandera=='v'){
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras!=null){
String nombre = extras.getString("Nombre");
String precio_producto = extras.getString("Precio");
String cantidad = extras.getString("Cantidad");
String total_pagar = extras.getString("Total");
lista_compra_informacion informacion = new
lista_compra_informacion(nombre,cantidad,precio_producto,total_pagar);
array.add(0,informacion);
ListaCompras.setAdapter(adapter);
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(),""+nombre+"
"+precio_producto+" "+cantidad+" "+total_pagar,
Toast.LENGTH_LONG).show();
}
}
}
public void buscar_articulos (View view){
Intent lista_art = new Intent(this, lista_de_objetos.class);
startActivity(lista_art);
}
}
Lista de compras informacion.java是列表中的行:
public class lista_compra_informacion {
public String Nombre;
public String Cantidad;
public String Precio;
public String Total;
public lista_compra_informacion(String Nombre, String Cantidad, String
Precio, String Total){
this.setNombre(Nombre);
this.setCantidad(Cantidad);
this.setPrecio(Precio);
this.setTotal(Total);
}
public String getNombre() {
return Nombre;
}
public void setNombre(String nombre) {
Nombre = nombre;
}
public String getCantidad() {
return Cantidad;
}
public void setCantidad(String cantidad) {
Cantidad = cantidad;
}
public String getPrecio() {
return Precio;
}
public void setPrecio(String precio) {
Precio = precio;
}
public String getTotal() {
return Total;
}
public void setTotal(String total) {
Total = total;
}
}
Lista compra adapter .java是列表的适配器:
public class Lista_compra_adapter extends
ArrayAdapter<lista_compra_informacion> {
private Activity context;
private int id;
ArrayList<lista_compra_informacion> array;
public Lista_compra_adapter(Activity context, int resource,
ArrayList<lista_compra_informacion> objects) {
super(context, resource, objects);
this.context = context;
this.id = resource;
this.array = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView==null){
LayoutInflater inflater = context.getLayoutInflater();
convertView = inflater.inflate(id, null);
}
TextView Nombre_txt = (TextView)
convertView.findViewById(R.id.nombre_del_producto);
TextView Cantidad_txt = (TextView)
convertView.findViewById(R.id.cantidad);
TextView Precio_txt = (TextView) convertView.findViewById(R.id.precio);
TextView Total_txt = (TextView)
convertView.findViewById(R.id.precio_total_producto);
lista_compra_informacion informacion = array.get(position);
Nombre_txt.setText(informacion.getNombre());
Cantidad_txt.setText(informacion.getCantidad());
Precio_txt.setText(informacion.getPrecio());
Total_txt.setText(informacion.getTotal());
return convertView;
}
}
答案 0 :(得分:0)
为什么会发生这种情况?
因为您要通过块
将最多一个元素添加到列表中if (extras!=null){
String nombre = extras.getString("Nombre");
String precio_producto = extras.getString("Precio");
String cantidad = extras.getString("Cantidad");
String total_pagar = extras.getString("Total");
lista_compra_informacion informacion = new lista_compra_informacion(nombre,cantidad,precio_producto,total_pagar);
array.add(0,informacion);
ListaCompras.setAdapter(adapter);
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(),""+nombre+"
"+precio_producto+" "+cantidad+" "+total_pagar,
Toast.LENGTH_LONG).show();
}
根据您的适配器实现,您可以根据列表视图中的多个元素添加列表。因此,请尝试在此块中或将来执行此活动时添加更多数据元素。它不像两行加载活动两次。了解活动生命周期。您可以在listview中看到与添加到适配器列表中的多个元素一样多的行,然后在活动的生命周期中调用notifyDatasetChanged ()
。