Why are the records shown null? [closed]

1

Good morning have colleagues, I would like to know if anyone has any idea why the records are shown null.

My JSON has data which are the following.

This is the script I'm using to perform the internal SQLite database

public static final String SCRIPT_TABLE_2 = " " +
        "create table "+TABLE_2+" " +
        "(" +
        "id integer primary key autoincrement, " +
        "concesionario varchar(75), " +
        "cable_instalar varchar(120), " +
        "Tipo_Red varchar(45) not null " +
        "); ";

These are the methods to register and obtain the records.

public boolean insertSolicitud(ItemSolicitud itemSolicitud){
    AD = DB.getWritableDatabase();
    boolean result = false;

    ContentValues CV = new ContentValues();
    CV.put("concesionario", itemSolicitud.getConcesionario());
    CV.put("cable_instalar", itemSolicitud.getCable_instalar());
    CV.put("Tipo_Red", itemSolicitud.getTipo_Red());

    try {
        result = AD.insert(DataBase.TABLE_2,null,CV) > 0;
    }catch (Exception e){
        e.printStackTrace();
    }

    AD.close();
    return result;
}

public ArrayList<ItemSolicitud> getAllSolicitudes(){
    ArrayList<ItemSolicitud> lstSlicitud = new ArrayList<ItemSolicitud>();

    AD = DB.getWritableDatabase();

    Cursor myCursor = AD.query(DataBase.TABLE_2, new String[]{
                    "id","concesionario","cable_instalar","Tipo_Red"},
            null,null,null,null,null);
    if (myCursor.moveToFirst()){
        do {
            lstSlicitud.add(new ItemSolicitud(myCursor.getInt(0),
                    myCursor.getString(1)));
        }while (myCursor.moveToNext());
    }

    AD.close();
    return lstSlicitud;
}

I leave the following classes that complement this activity

my adapter

public class AdapterSolicitud extends BaseAdapter {

protected AppCompatActivity datosActivity;
protected ArrayList<ItemSolicitud> itemSolicitudes;

public AdapterSolicitud (AppCompatActivity datosActivity, ArrayList<ItemSolicitud> itemSolicitudes){
    this.datosActivity = datosActivity;
    this.itemSolicitudes = itemSolicitudes;
}

@Override
public int getCount() {
    return itemSolicitudes.size();
}

@Override
public Object getItem(int i) {
    return itemSolicitudes.get(i);
}

@Override
public long getItemId(int i) {
    return i;
}

@Override
public View getView(int i, View convertView, ViewGroup parent) {
    View v = convertView;

    if (convertView == null){
        LayoutInflater inf = (LayoutInflater)datosActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = inf.inflate(R.layout.item_solicitudes, null);
    }

    ItemSolicitud myItemSolicitudes = itemSolicitudes.get(i);
    TextView txtCon, txtCable, txtTipo;

    txtCon = (TextView)v.findViewById(R.id.txtCon);
    txtCable = (TextView)v.findViewById(R.id.txtCable);
    txtTipo = (TextView)v.findViewById(R.id.txtTipo);

    txtCon.setText("Concesionario: " + myItemSolicitudes.getConcesionario());
    txtCable.setText("Cable a instalar: " + myItemSolicitudes.getCable_instalar());
    txtTipo.setText("Tipo de red: " + myItemSolicitudes.getTipo_Red());
    return v;
}

}

my builder

public class ItemSolicitud implements Serializable {
int id;
String concesionario, cable_instalar, Tipo_Red;

public ItemSolicitud(int id) {
    this.id = id;
}

public ItemSolicitud(int id, String concesionario) {
    this.id = id;
    this.concesionario = concesionario;
}

public ItemSolicitud(int id, String concesionario, String cable_instalar) {
    this.id = id;
    this.concesionario = concesionario;
    this.cable_instalar = cable_instalar;
}

public ItemSolicitud(int id, String concesionario, String cable_instalar, String tipo_Red) {
    this.id = id;
    this.concesionario = concesionario;
    this.cable_instalar = cable_instalar;
    Tipo_Red = tipo_Red;
}

public ItemSolicitud(String concesionario, String cable_instalar, String tipo_Red) {
    this.concesionario = concesionario;
    this.cable_instalar = cable_instalar;
    Tipo_Red = tipo_Red;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getConcesionario() {
    return concesionario;
}

public void setConcesionario(String concesionario) {
    this.concesionario = concesionario;
}

public String getCable_instalar() {
    return cable_instalar;
}

public void setCable_instalar(String cable_instalar) {
    this.cable_instalar = cable_instalar;
}

public String getTipo_Red() {
    return Tipo_Red;
}

public void setTipo_Red(String tipo_Red) {
    Tipo_Red = tipo_Red;
}

}

and the main class

@Override     protected void onCreate (Bundle savedInstanceState) {         super.onCreate (savedInstanceState);         setContentView (R.layout.activity_solicitudes);

    lstSolicitud = (ListView)findViewById(R.id.lstSolicitudes);
    myItemSolicitud = new ArrayList<ItemSolicitud>();

    myDaoSolicitud = new DaoSolicitudes(getApplication());
    myItemSolicitud = myDaoSolicitud.getAllSolicitudes();

    myAdapterSolicitud = new AdapterSolicitud(this, myItemSolicitud);
    lstSolicitud.setAdapter(myAdapterSolicitud);
    registerForContextMenu(lstSolicitud);
}

@Override
public boolean onCreateOptionsMenu(android.view.Menu menu) {
    menu.add(0,0,0, "Actualizar");
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case 0:
            new SolicitudSegundoplano().execute("");
            break;
    }
    return super.onOptionsItemSelected(item);

}

public void reload(){
    myDaoSolicitud = new DaoSolicitudes(getApplicationContext());
    myItemSolicitud = myDaoSolicitud.getAllSolicitudes();
    myAdapterSolicitud = new AdapterSolicitud(this, myItemSolicitud);
    lstSolicitud.setAdapter(myAdapterSolicitud);
}

public ArrayList<ItemSolicitud> LanzarSolicitud(String params){
    METHOD_NAME = "getConDetail";
    SOAP_ACTION = NAMESPACE + METHOD_NAME;

    ArrayList<ItemSolicitud> myArrayWS = new ArrayList<ItemSolicitud>();

    try {

        request = new SoapObject(NAMESPACE, METHOD_NAME);

        concesionario = new PropertyInfo();
        concesionario.setName("solicitud");
        concesionario.setValue(params);
        concesionario.setType(String.class);

        request.addProperty(concesionario);

        envelo = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelo.dotNet = false;
        envelo.setOutputSoapObject(request);

        transport = new HttpTransportSE(URL_SERVICE);
        transport.call(SOAP_ACTION, envelo);

        String resultado = (String) envelo.getResponse();

        Type tipo = new TypeToken<ArrayList<ItemSolicitud>>() {}.getType();

        Gson convertidoJson = new Gson();

        myArrayWS = convertidoJson.fromJson(resultado, tipo);
    }catch (Exception e){
        e.printStackTrace();
    }

    return myArrayWS;
}

class SolicitudSegundoplano extends AsyncTask<String,Integer, ArrayList<ItemSolicitud>>{

    @Override
    protected ArrayList<ItemSolicitud> doInBackground(String... params) {
        return LanzarSolicitud(params[0]);
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        dialogAsynk = ProgressDialog.show(Solicitudes.this, "", "Cargando...", true);
    }

    @Override
    protected void onPostExecute(ArrayList<ItemSolicitud> itemSolicituds) {
        super.onPostExecute(itemSolicituds);

        dialogAsynk.dismiss();

        Log.d(getClass().getSimpleName(), "Tamaño del arrego: " + itemSolicituds.size());

        DaoSolicitudes myDao = new DaoSolicitudes(getApplicationContext());

        for (ItemSolicitud solicitud : itemSolicituds) {
            if (myDao.insertSolicitud(solicitud) == true){
                Crouton.makeText(Solicitudes.this, "Actualizado", Style.INFO).show();
                reload();
            }else {
                Crouton.makeText(Solicitudes.this, "Sin Novedades", Style.INFO).show();
            }
        }
    }
}

@Override
protected void onDestroy() {
    super.onDestroy();
    Crouton.cancelAllCroutons();
}

}

Thank you in advance for your help.

    
asked by Alexis Caballero 15.03.2017 в 19:16
source

2 answers

0

The essential part of pairing the .json is missing, which in this case is an Array and includes the data in the object itemSolicitud :

JSONArray json = new JSONArray(response);
JsonObject objeto = json.getJsonObject(0); //Indice del primer objeto, 0

String consesionario = objeto.getString("consesionario");
String cable_instalar = objeto.getString("cable_instalar");
String Tipo_Red = objeto.getString("Tipo_Red");

The values must be added to the object itemSolicitud , using setters , example:

itemSolicitud.setConsesionario(consesionario);
itemSolicitud.setCable_instalar(cable_instalar);
itemSolicitud.setTipo_Red(Tipo_Red);
    
answered by 15.03.2017 в 21:11
0

First of all thank you very much to those who helped me, the error was like in most cases a misspelled word and accompanied by an element.

 public ArrayList<ItemSolicitud> getAllSolicitudes(){

    ArrayList<ItemSolicitud> lstSlicitud = new ArrayList<ItemSolicitud>();
    AD = DB.getWritableDatabase();

    Cursor myCursor = AD.query(
            DataBase.TABLE_2,
            new String[]{"id","concesionario","cable_instalar","Tipo_Red"},
            null,
            null,
            null,
            null,
            null
    );
    if (myCursor.moveToFirst()){
        do {
            lstSlicitud.add(new ItemSolicitud(myCursor.getInt(0),
                    myCursor.getString(1), myCursor.getString(2), myCursor.getString(3)));
        }while (myCursor.moveToNext());
    }

    AD.close();
    return lstSlicitud;
}

So the word dealership was badly written in the JSON that is why it appeared as null because it was not, as in my cursor there was no room to go through the arrangement and therefore could not find the position and put it as null .

    
answered by 16.03.2017 в 00:36