I am new for Realm integration. I am trying to save my retrofit json response into Realm database. But still I am confuse how to complete this task for retrofit 2.
I am getting json response and extends RealmObject class as per RealM documents. but still not getting any good way to store my response into realm directly.
Dashboard Activity:
apiInterface = APIClient.getClient().create(APIInterface.class);
final Call<RealmList<ExampleTest>> call = apiInterface.getSurvay();
call.enqueue(new Callback<RealmList<ExampleTest>>() {
@Override
public void onResponse(Call<RealmList<ExampleTest>> call, Response<RealmList<ExampleTest>> response) {
resource = response.body();
Log.d(" response "," success ");
}
API client :
{
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
retrofit = new Retrofit.Builder()
.baseUrl("** my URL **")
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
return retrofit;
}
build.gradle:
compile ('com.squareup.retrofit2:retrofit:2.1.0') {
exclude module: 'okhttp'
}
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
compile 'com.squareup.okhttp3:okhttp:3.4.1'
POJO class:
ExampleTest:
public class ExampleTest extends RealmObject {
@SerializedName("Id")
@Expose
private Integer id;
@SerializedName("name")
@Expose
private String surveyName;
@SerializedName("Language_id")
@Expose
private Integer languageId;
@SerializedName("image")
@Expose
private String surveyImage;
@SerializedName("description")
@Expose
private String surveyDescription;
@SerializedName("ListQuestion")
@Expose
private RealmList<ListQuestion> listQuestion = null;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSurveyName() {
return surveyName;
}
public void setSurveyName(String surveyName) {
this.surveyName = surveyName;
}
public Integer getLanguageId() {
return languageId;
}
public void setLanguageId(Integer languageId) {
this.languageId = languageId;
}
public String getSurveyImage() {
return surveyImage;
}
public void setSurveyImage(String surveyImage) {
this.surveyImage = surveyImage;
}
public String getSurveyDescription() {
return surveyDescription;
}
public void setSurveyDescription(String surveyDescription) {
this.surveyDescription = surveyDescription;
}
public RealmList<ListQuestion> getListQuestion() {
return listQuestion;
}
public void setListQuestion(RealmList<ListQuestion> listQuestion) {
this.listQuestion = listQuestion;
}
}
ListQuestion:
public class ListQuestion extends RealmObject {
@SerializedName("Id")
@Expose
private Integer id;
@SerializedName("Question_text")
@Expose
private String questionText;
@SerializedName("Answer_type_id")
@Expose
private Integer answerTypeId;
@SerializedName("Answer_type")
@Expose
private String answerType;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getQuestionText() {
return questionText;
}
public void setQuestionText(String questionText) {
this.questionText = questionText;
}
public Integer getAnswerTypeId() {
return answerTypeId;
}
public void setAnswerTypeId(Integer answerTypeId) {
this.answerTypeId = answerTypeId;
}
public String getAnswerType() {
return answerType;
}
public void setAnswerType(String answerType) {
this.answerType = answerType;
}
RealM:
private void initRealm() {
Realm.init(this);
RealmConfiguration config = new RealmConfiguration.Builder()
.name("books.realm")
.schemaVersion(1)
.deleteRealmIfMigrationNeeded()
.build();
Realm.setDefaultConfiguration(config);
}
Please help me how can I store my json response into realm through retrofit 2.