At the time of making a query this is displayed well in a normal ListView
, but when I change the ListView
for a custom list I have some problems.
The problem is that in the query the data is in a line generated by the cursor and in the customized list the data is filled one by one.
I attach code.
Code of the class that personalizes the list
package com.example.aguila0017.auxiliarcompras;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
/**
* Created by Aguila0017 on 7/09/2017.
*/
public class ListaPersonalizada extends BaseAdapter {
Context context;
ArrayList lista;
String id;
String nombre;
String valor;
String cantidad;
String total;
String dia;
String mes;
String ano;
LayoutInflater inflater;
public ListaPersonalizada(Activity context, String id, String nombre, String valor, String cantidad,String total, String dia, String mes, String ano) {
this.context = context;
//this.lista = lista;
this.id = id;
this.nombre = nombre;
this.valor = valor;
this.cantidad = cantidad;
this.total = total;
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
@Override
public int getCount() {
return id.length();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
// Declare Variables
TextView txt1;
TextView txt2;
TextView txt3;
TextView txt4;
TextView txt5;
TextView txt6;
TextView txt7;
TextView txt8;
//http://developer.android.com/intl/es/reference/android/view/LayoutInflater.html
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.listapersonalizada, parent, false);
// Locate the TextViews in listview_item.xml
txt1= (TextView) itemView.findViewById(R.id.txtID);
txt2 = (TextView) itemView.findViewById(R.id.txt_PRODUCTO);
txt3 = (TextView) itemView.findViewById(R.id.TXTvalor);
txt4 = (TextView) itemView.findViewById(R.id.txtCANTIDAD);
txt5 = (TextView) itemView.findViewById(R.id.txtDIA);
txt6 = (TextView) itemView.findViewById(R.id.txtMES);
txt7 = (TextView) itemView.findViewById(R.id.txtAÑO);
txt8 = (TextView)itemView.findViewById(R.id.txtTotal);
// Capture position and set to the TextViews
txt1.setText(id);
txt2.setText(nombre);
txt3.setText(valor);
txt4.setText(cantidad);
txt8.setText(total);
txt5.setText(dia);
txt6.setText(mes);
txt7.setText(ano);
return itemView;
}
}
Code of the main class in which you try to open the custom list.
package com.example.aguila0017.auxiliarcompras;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.format.Time;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Date;
public class MainActivity extends AppCompatActivity {
ListaPersonalizada listaPersonalizada;
EditText et_nombre, et_cantidad, et_valor, et_total, et_acomulador;
int valor=0, total, cantiadad=0 , acomulador=0;
int dia,mes,ano;
int NOMBRE,CANTIDAD,VALOR,TOTAL,DIA,MES,ANO;
int ID;
ListView lista;
Button sumar, btn_ver, btn_NuevaCompra, btn_listaFechas;
ArrayList<String> listado, ListadoFechas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
lista = (ListView)findViewById(R.id.lista);
lista = (ListView)findViewById(R.id.lista);
et_nombre = (EditText) findViewById(R.id.et_NomProducto);
et_cantidad = (EditText) findViewById(R.id.et_cantidad);
et_valor = (EditText) findViewById(R.id.et_valor);
et_total = (EditText) findViewById(R.id.et_total);
et_acomulador=(EditText) findViewById(R.id.et_acomulador);
sumar = (Button) findViewById(R.id.bt_modifocar);
btn_ver = (Button)findViewById(R.id.btn_ver);
btn_NuevaCompra = (Button)findViewById(R.id.btn_NuevaCompra);
btn_listaFechas = (Button)findViewById(R.id.btn_LFechas);
btn_listaFechas.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this,Organizador.class);
startActivity(i);
}
});
btn_NuevaCompra.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Time today = new Time(Time.getCurrentTimezone());
today.setToNow();
int dia=today.monthDay;
int mes = today.month;
int year = today.month;
mes = mes + 1;
nuevaCompra(dia,mes,year);
et_nombre.setText("");
et_cantidad.setText("");
et_valor.setText("");
et_acomulador.setText("");
et_total.setText("");
acomulador=acomulador-acomulador;
}
});
btn_ver.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, lista.class);
startActivity(intent);
}
});
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.ButtonFloat);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
valor= Integer.valueOf(et_valor.getText().toString());
cantiadad= Integer.valueOf(et_cantidad.getText().toString());
total= valor*cantiadad;
et_total.setText(""+total);
acomulador = acomulador + total;
et_acomulador.setText(""+acomulador);
Time today = new Time(Time.getCurrentTimezone());
today.setToNow();
ano=today.year;
mes=today.month+1;
dia = today.monthDay;
guardar(et_nombre.getText().toString(),valor,cantiadad,total,acomulador,dia,mes,ano);
et_nombre.setText("");
et_cantidad.setText("");
et_valor.setText("");
}
});
/*Boton basico reemplazado por el floatbutton
FUNCION: añade registros y hace el respectivo calculo de dar el total.
sumar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
valor= Integer.valueOf(et_valor.getText().toString());
cantiadad= Integer.valueOf(et_cantidad.getText().toString());
total= valor*cantiadad;
et_total.setText(""+total);
acomulador = acomulador + total;
et_acomulador.setText(""+acomulador);
guardar(et_nombre.getText().toString(),valor,cantiadad,total,acomulador);
et_nombre.setText("");
et_cantidad.setText("");
et_valor.setText("");
}
});
*/
}
@Override
protected void onPostResume() {
super.onPostResume();
Cargarlistado();
}
private void Cargarlistado() {
listado = lista();
listaPersonalizada = new ListaPersonalizada(MainActivity.this,lista());
lista.setAdapter(listaPersonalizada);
private void guardar (String NOMBRE ,int VALOR, int CANTIDAD, int TOTAL ,int ACOMULADO, int DIA, int MES, int ANO){
BaseHelper helper = new BaseHelper(this,"Demo",null,1);
SQLiteDatabase db = helper.getWritableDatabase();
try{
ContentValues c = new ContentValues();
c.put("Nombre",NOMBRE);
c.put("Valor", VALOR);
c.put("Cantidad",CANTIDAD);
c.put("Total",TOTAL);
c.put("Acomulado",ACOMULADO);
c.put("DIA",DIA);
c.put("MES",MES);
c.put("ANO",ANO);
db.insert("REGISTROS",null,c);
db.close();
Toast.makeText(this,"Articulo Ingresado.",Toast.LENGTH_SHORT).show();
}
catch (Exception e){
Toast.makeText(this,"Error: "+e.getMessage(),Toast.LENGTH_SHORT).show();
}
}
private ArrayList<String> lista(){
ArrayList<String>datos = new ArrayList<String>();
BaseHelper helper = new BaseHelper(this,"Demo",null,1);
SQLiteDatabase db = helper.getReadableDatabase();
String sql = "select Id, Nombre, Valor, Cantidad, Total, DIA, MES,ANO from Registros";
Cursor c = db.rawQuery(sql,null);
if (c.moveToFirst()){
do{
String linea = c.getInt(0)+" "+c.getString(1)+" "+c.getInt(2)+" "+c.getInt(3)+" "+c.getInt(4)+" "+c.getInt(5)+" "+c.getInt(6)+" "+c.getInt(7);
datos.add(linea);
}while (c.moveToNext());
}
db.close();
return datos;
}
private void nuevaCompra(int DIA, int MES, int YEAR){
BaseHelper helper = new BaseHelper(this,"Fecha",null,1);
SQLiteDatabase db = helper.getWritableDatabase();
try{
ContentValues c = new ContentValues();
c.put("DIA",DIA);
c.put("MES",MES);
c.put("YEAR",YEAR);
db.insert("FECHAS",null,c);
db.close();
Toast.makeText(this,"Nueva Compra en proceso...",Toast.LENGTH_SHORT).show();
}
catch (Exception e){
Toast.makeText(this,"Error: "+e.getMessage(),Toast.LENGTH_SHORT).show();
}
}
}