要实现数据绑定。我实现了代码,数据来自API,但未与xml绑定且未显示任何错误。所以我很困惑问题出在哪里..请帮助我。
我的代码
content_policy_info.xml
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="policyinfo"
type="com.exlservice.lifeprov1.service.model.GetPolicyInfoResponse" />
<variable
name="surrenderquote"
type="com.exlservice.lifeprov1.service.model.SurrenderQuoteResponse" />
</data>
<android.support.constraint.ConstraintLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/c1"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".view.ui.PolicyInfo"
tools:showIn="@layout/app_bar_policy_info">
<android.support.v4.widget.nestedScrollView
android:layout_width="match_parent"
android:background="#223d50"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/policy_prime_info_bg"
android:layout_marginTop="20dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_marginLeft="5dp"
android:layout_height="wrap_content"
android:text="@{policyInfo.ProductId}"
android:textColor="#76c6db"
android:layout_weight="1"
android:typeface="serif"
android:textStyle="bold"
android:id="@+id/id_fc_first_key"/>
<TextView
android:layout_width="0dp"
android:textColor="#76c6db"
android:textStyle="bold"
android:typeface="serif"
android:layout_height="wrap_content"
android:text="@{policyInfo.Contract}"
android:layout_weight="1"
android:id="@+id/id_fc_second_key"/>
</LinearLayout>
</LinearLayout>
</android.support.v4.widget.nestedScrollView>
</android.support.constraint.ConstraintLayout>
</layout>
Policyinfo.java
public class PolicyInfo extends AppCompatactivity
implements NavigationView.OnNavigationItemSelectedListener {
APIInterface apiInterface;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding= DataBindingUtil.setContentView(this,R.layout.activity_policy_info);
Intent intent = getIntent();
String sCompanyCode = intent.getStringExtra("CompanyCode");
String sPolicyNumber = intent.getStringExtra("PolicyNumber");
String sWayPoint = intent.getStringExtra("WayPoint");
Log.e("onCreate: ",sCompanyCode+" "+sPolicyNumber );
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String currentTime = sdf.format(new Date());
SurrenderQuoteInput surrenderQuoteInput = new SurrenderQuoteInput();
surrenderQuoteInput.setCoderID("TRN7");
surrenderQuoteInput.setCompanyCode("01");
PolicyDetailsReq policyDetailsReq= new PolicyDetailsReq();
policyDetailsReq.setCoderID("TRN7");
getPolicyInfoRequest.setPolicyDetailsReq(policyDetailsReq);
PolicyInfoViewModel.Factory factory = new PolicyInfoViewModel.Factory(
**getapplication(),getPolicyInfoRequest,surrenderQuoteRequest);
PolicyInfoViewModel viewModel =
ViewModelProviders.of(this,factory).get(PolicyInfoViewModel.class);
**observeViewModel**(viewModel);**
// show it
pd.show();
DrawerLayout drawer = findViewById(R.id.drawer_layout);
actionbardrawertoggle toggle = new actionbardrawertoggle(
this,drawer,toolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
private void **observeViewModel**(final PolicyInfoViewModel viewModel) {
// Update the list when the data changes
viewModel.getPolicyInfoResponsetObservable().observe(this,new Observer<GetPolicyInfoResponse>()
{
@Override
public void onChanged(@Nullable GetPolicyInfoResponse getPolicyInfoResponse) {
if(getPolicyInfoResponse!=null) {
viewModel.setPolicyInfoResult(getPolicyInfoResponse);
binding.setPolicyinfo(getPolicyInfoResponse);
}
}
});
}
此代码用于导航抽屉活动,其中所有组件都位于content_policy_info.xml中。请帮帮我。