当我向arraylist添加信息时,为什么我的自定义列表视图不会增加

时间:2017-07-10 18:43:47

标签: android arraylist android-arrayadapter custom-lists

这段代码对我有用,就是当我尝试将信息添加到列表时,它看起来像一行,但如果我尝试添加更多信息而不是显示为另一行,则第一行更改为新信息。那么为什么会这样呢?

主类调用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;
}
}

1 个答案:

答案 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 ()