【问题标题】:Insert retrofit array data into sqlite将改造数组数据插入到 sqlite
【发布时间】:2018-11-10 00:58:31
【问题描述】:

我已经设法使用改造从服务器检索数据,之后我想将它插入到 sqlite 数据库中,但是出现了一些错误。我在做什么这是错的?因为我将它设置到 textview 并显示在输出中。为什么返回为空对象?

我的代码改造部分

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

【问题讨论】:

  • 看起来 myDb 为空。
  • @LeoPelozo,是的,为什么它为空?是因为我使用模型吸气剂检索它吗?
  • 你需要在某个地方初始化它。 saveUser 类是如何调用的?你需要实例化它。
  • @LeoPelozo 哦,我明白了,谢谢,它有效

标签: android json sqlite retrofit2


【解决方案1】:

您需要在使用SQLiteHandler类对象之前声明和初始化它。

类似的,

SQLiteHandler myDb = new SQLiteHandler(); //add this line
myDb.saveUser(akaunJ, paspotJ, namaJ);

【讨论】:

  • 如果有帮助,请对此答案投票。编码快乐!
【解决方案2】:

使用 Realm 将数据存储在数据库中。 无需声明其数据库结构即可存储类的对象。更方便。

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多