Как загрузить данные из таблицы, взять из нее значение и с этим значением загрузить другую таблицу? - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь загрузить данные, находящиеся на сервере, вставить их в базу данных SQLITE, получить значение из этой таблицы и сделать запрос к серверу, чтобы получить данные из другой таблицы. Здесь я покажу вам код.

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bills);

        ImageView search = findViewById(R.id.iv_search);
        facturaId = findViewById(R.id.et_facturaid);


        mContext = getApplicationContext();
        activity = this;



        database = AppDatabase.getAppDatabase(getApplicationContext());

        search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                new Thread(() -> {
                    // Code here
                    getVenta(facturaId.getText().toString());
                }).start();

                new Thread(() -> {
                    // Code here
                   getVentaD(String.valueOf(database.ventaDao().getVenta().getID()));
                }).start();

            }
        });

    }

//Method1
public void getVenta(final String id) {



        new Thread(() -> {

            // Code here
            database.ventaDao().deleteVenta();
        }).start();



        final String link = AppConfig.getVenta() + "/"+ id;

        StringRequest postRequest = new StringRequest(Request.Method.GET, link,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        //      Log.d("Response", response);


                        if (!response.equals("") && !response.equals("null") && !response.equals("[]")) {


                            try {

                                final JSONArray array = new JSONArray(response);
                                if (array.length() > 0) {
                                    for (int i = 0; i < array.length(); i++) {

                                        final JSONObject object = array.getJSONObject(i);



                                                try {

                                                    AsyncTask.execute(new Runnable() {
                                                        @Override
                                                        public void run() {
                                                            database.runInTransaction(() ->{
                                                                try {
                                                                    database.ventaDao().addVenta(new Venta(
                                                                            object.getInt("ID"),
                                                                            object.getString("Empresa"),
                                                                            object.getString("Mov"),
                                                                            object.getString("MovID"),
                                                                            object.getString("FechaEmision"),
                                                                            object.getString("Concepto"),
                                                                            object.getString("Usuario"),
                                                                            object.getString("Proyecto"),
                                                                            object.getString("ClienteID"),
                                                                            object.getInt("EnviarA"),
                                                                            object.getString("Agente"),
                                                                            object.getString("Condicion"),
                                                                            object.getInt("Sucursal"),
                                                                            object.getDouble("Importe")));
                                                                } catch (JSONException e) {
                                                                    e.printStackTrace();
                                                                }

                                                            });
                                                        }
                                                    });





                                                } catch (Exception ex) {

                                                    Log.e("", "error3 => " + ex.toString());
                                                }

                                    }

                                    Toast.makeText(getApplicationContext(), "OK", Toast.LENGTH_LONG).show();


                                }

                            } catch (Exception ex) {
                                Toast.makeText(getApplicationContext(), "error1 => " + ex.toString(), Toast.LENGTH_LONG).show();
                                Log.e("", "error1 => " + ex.toString());

                            }


                        }


                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(getApplicationContext(), "error => " + error.toString(), Toast.LENGTH_LONG).show();
                        Log.e("", "error => " + error.toString());

                    }
                }
        ) {//here before semicolon ; and use { }.
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> headers = new HashMap<>();
                final String token = "Bearer " + "dd";
                headers.put("Content-Type", "application/json");
                headers.put("Authorization", token);
                return super.getHeaders();
            }

            @Override
            public String getBodyContentType() {
                return super.getBodyContentType();
            }
        };

        postRequest.setRetryPolicy(new DefaultRetryPolicy(
                40000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

        VolleySingleton.getInstance(getApplicationContext()).addToRequestque(postRequest);
    }


//Method2
public void getVentaD(final String id) {


        new Thread(() -> {

            // Code here
            database.ventaDDao().deleteVentaD();
        }).start();

        final String link = AppConfig.getVentaD() + "/"+ id;

        StringRequest postRequest = new StringRequest(Request.Method.GET, link,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        //      Log.d("Response", response);


                        if (!response.equals("") && !response.equals("null") && !response.equals("[]")) {


                            try {

                                final JSONArray array = new JSONArray(response);
                                if (array.length() > 0) {
                                    for (int i = 0; i < array.length(); i++) {

                                        final JSONObject object = array.getJSONObject(i);

                                                try {

                                                    AsyncTask.execute(new Runnable() {
                                                        @Override
                                                        public void run() {
                                                            database.runInTransaction(() -> {

                                                                try {
                                                                    database.ventaDDao().addVentaD(new VentaD(
                                                                            object.getInt("ID"),
                                                                            object.getString("Almacen"),
                                                                            object.getString("Articulo"),
                                                                            object.getDouble("Precio"),
                                                                            object.getDouble("PrecioSugerido"),
                                                                            object.getDouble("Costo"),
                                                                            object.getString("Unidad"),
                                                                            object.getDouble("Cantidad"),
                                                                            object.getDouble("CantidadInventario"),
                                                                            object.getString("Agente"),
                                                                            object.getInt("EnviarA"),
                                                                            object.getDouble("UltimoCosto"),
                                                                            object.getDouble("Preciolista")));
                                                                } catch (JSONException e) {
                                                                    e.printStackTrace();
                                                                }

                                                            });
                                                        }
                                                    });




                                                } catch (Exception ex) {

                                                    Log.e("", "error3 => " + ex.toString());
                                                }

                                    }

                                    Toast.makeText(getApplicationContext(), "OK", Toast.LENGTH_LONG).show();

                                }

                            } catch (Exception ex) {
                                Toast.makeText(getApplicationContext(), "error1 => " + ex.toString(), Toast.LENGTH_LONG).show();
                                Log.e("", "error1 => " + ex.toString());

                            }


                        }


                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(getApplicationContext(), "error => " + error.toString(), Toast.LENGTH_LONG).show();
                        Log.e("", "error => " + error.toString());

                    }
                }
        ) {//here before semicolon ; and use { }.
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> headers = new HashMap<>();
                final String token = "Bearer " + "dd";
                headers.put("Content-Type", "application/json");
                headers.put("Authorization", token);
                return super.getHeaders();
            }

            @Override
            public String getBodyContentType() {
                return super.getBodyContentType();
            }
        };

        postRequest.setRetryPolicy(new DefaultRetryPolicy(
                40000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

        VolleySingleton.getInstance(getApplicationContext()).addToRequestque(postRequest);
    }

--------- начало аварии facturasapp E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: Thread-8 Процесс: facturasapp, PID: 24606 java.lang.NullPointerException: попытка вызвать виртуальный метод int facturasapp.data.models.Venta.getID () для нулевой ссылки на объект at facturasapp.activity.user.BillsActivity $ 1.lambda $ onClick $ 1 $ BillsActivity $ 1 (BillsActivity.java:83) at facturasapp.activity.user.BillsActivity $ 1 $$ Lambda $ 1.run (неизвестный источник) at java.lang.Thread.run (Thread.java:762)

Я замечаю, что когда я пытаюсь запросить идентификатор первой таблицы, она еще не была вставлена, и поэтому она дает мне нулевой ответ. Как мне сделать (если это возможно), чтобы иметь возможность вставить, а затем обратиться, чтобы получить значение, которое мне нужно, чтобы обратиться ко второй таблице в том же блоке кода?

Спасибо ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...