2017-07-10 6 views
0

Ce code fonctionne pour moi, la chose est que lorsque j'essaie d'ajouter des informations à la liste, cela ressemble à une ligne mais si j'essaie d'ajouter plus d'informations Au lieu d'apparaître comme une autre ligne, la première passe à la nouvelle information. Alors pourquoi cela s'est-il passé?pourquoi mon listview personnalisé n'augmente pas quand j'ajoute des informations à l'arraylist

Le principal appel de classe Costo Produits .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); 

} 



} 

de compras informacion.java Lista est la ligne de la liste:

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

compra adaptateur .java Lista est l'adaptateur du liste:

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

Collez le code où vous mettez à jour la liste – SpaceBison

Répondre

0

Alors pourquoi happend?

Parce que vous ajoutez au plus un élément à la liste par le bloc

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

Comme de nombreux éléments que vous ajoutez la liste autant d'éléments sont là dans le listview selon votre implémentation de l'adaptateur. Essayez donc d'ajouter plus d'éléments de données dans ce bloc ou dans l'exécution future de cette activité. Ce n'est pas comme charger l'activité deux fois pour deux lignes. En savoir plus sur le cycle de vie de l'activité Vous voyez autant de lignes dans la liste que de nombreux éléments que vous ajoutez à la liste des adaptateurs suivis d'un appel à notifyDatasetChanged() pendant le cycle de vie de l'acivity.

+0

Je ne peux pas ajouter plus de données au bloc car, les données ont été obtenues d'un produit sélectionné dans une autre liste à chaque fois que l'utilisateur y accède. mon doute est que je veux faire une liste personnalisée des données des produits sélectionnés. il y a un autre moyen d'augmenter la liste ou une commande à l'adaptateur pour faire une autre ligne ?? – juan

+0

Voulez-vous mettre en surbrillance la ligne sélectionnée de listview? –

+0

non !! Je veux ajouter des produits que les gens veulent d'une liste qui contient tous les produits qu'un magasin a! – juan