我对pojo类的回应是这样的:
{
"data": {
"first_name": "test",
"last_name": "test123",
"email": "test@gmail.com",
"user_id": "11"
},
"message": "login successfully.",
"status": "success."
}
我想从上面的响应中访问父类和子类,例如消息和电子邮件。我怎样才能使用单个pojo..? 在这里,我面临空指针异常。
我的代码是:
<data>
<variable name="MyParent"
type="com.package.ParentModel"/>
</data>
<EditText
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="@={MyParent.data.email}"
android:id="@+id/et_email"/>
如何获得同一 pojo 的父子两类的财产..?
我测试了它。奇怪!它工作正常。我在这里发布示例代码,您必须匹配并找到自己的问题。
activity_sample.xml
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="response"
type="com.innovanathinklabs.sample.data.Response" />
</data>
<LinearLayout
...
>
<EditText
...
android:text="@={response.data.email}" />
</LinearLayout>
</layout>
响应.java(父模型(
public class Response extends BaseObservable {
private Data data;
private String message;
private String status;
public void setData(Data data) {
this.data = data;
}
public Data getData() {
return data;
}
public void setMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setStatus(String status) {
this.status = status;
}
public String getStatus() {
return status;
}
}
数据.java(子模型(
public class Data extends BaseObservable {
private String userId;
private String lastName;
private String firstName;
private String email;
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserId() {
return userId;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getLastName() {
return lastName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getFirstName() {
return firstName;
}
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return email;
}
}
活动样本.java
public class ActivitySample extends AppCompatActivity {
ActivitySampleBinding binding;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_sample);
// make dummy response data
Response response = new Response();
Data data = new Data();
data.setEmail("khermaj@gmail.com");
response.setData(data);
// pass dummy data in layout
binding.setResponse(response);
}
}
*要检查的事项 :
- 检查模型是否应扩展
BaseObservable
以使用双向数据绑定。或者您也可以使用ObservableField。 - 变量名称应从小写字母开始。必须检查 Java 命名会议。你已经采取了
variable name="MyParent"
- 如果您尚未将模型传递到布局,您将获得
NullPointerException
。就像我在onCreate()
binding.setResponse(response);
一样.
请参考这个模型类。它会帮助你。
public class ParentModel {
private String name;
private ChildModel childModel;
public ParentModel(String name) {
this.name = name;
childModel=new ChildModel();
childModel.setName("Apple");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ChildModel getChildModel() {
return childModel;
}
public void setChildModel(ChildModel childModel) {
this.childModel = childModel;
}
public class ChildModel {
public String name ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}