Вставить данные массива дооснащения в sqlite - PullRequest
0 голосов
/ 31 мая 2018

Мне удалось получить данные с сервера с помощью модернизации, после чего я хотел бы вставить их в базу данных sqlite, однако есть некоторая ошибка.что я делаю что не так?потому что я установил его в textview, и он показывает на выходе.почему он возвращается как нулевой объект?

Error that i receive

Моя модифицированная часть кода

    private void loadJSON() {
    Intent intent = getIntent();
    final String getpaspot = intent.getStringExtra("pasport");

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("XXXXXXXXXXXXXXXX")
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    RequestInterface request = retrofit.create(RequestInterface.class);
    Call<JSONResponse> call = request.getJSON(getpaspot);
    call.enqueue(new Callback<JSONResponse>() {
        @Override
        public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) {

            if(response.isSuccessful()) {
                JSONResponse jsonResponse = response.body();
                jemaah = new ArrayList<>(Arrays.asList(jsonResponse.getJemaah()));
                adapter = new JemaahAdapter(jemaah);
                recyclerView.setAdapter(adapter);

                //List<Jemaah> jemaahs = jsonResponse.getJemaah();
                for (Jemaah j : jemaah){
                    if (j.getManifest1_no_paspot().equals(getpaspot)){
                        reqjemaah = j;

                        String namaJ = reqjemaah.getManifest1_nama().trim();
                        String paspotJ = reqjemaah.getManifest1_no_paspot().trim();
                        String akaunJ = reqjemaah.getManifest1_no_akaun().trim();

                        textView1.setText(namaJ);
                        textView2.setText(paspotJ);
                        textView3.setText(akaunJ);

                        myDb.saveUser(akaunJ, paspotJ, namaJ);
                    }
                }

            }
        }

        @Override
        public void onFailure(Call<JSONResponse> call, Throwable t) {
            Log.d("Error",t.getMessage());
        }
    });
}

SQLiteHandler

    public void saveUser(String manifest1_no_akaun, String manifest1_no_paspot, String manifest1_nama) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();

    values.put(KEY_NOAKAUN, manifest1_no_akaun );
    values.put(KEY_NOPASPOT, manifest1_no_paspot );
    values.put(KEY_NAMA, manifest1_nama );

    db.insert(TABLE_USER,null, values);
    db.close();
}

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Используйте Realm для хранения данных в базе данных. Может хранить объект класса, не объявляя структуру базы данных. Это удобнее.

0 голосов
/ 31 мая 2018

Вам необходимо объявить и инициализировать SQLiteHandler объект класса перед его использованием.

Что-то вроде,

SQLiteHandler myDb = new SQLiteHandler(); //add this line
myDb.saveUser(akaunJ, paspotJ, namaJ);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...