【发布时间】: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