我試圖通過profile.setClientName("Name");從Observer<T>'onChanged事件調(diào)用來更新我的 EditText 中的值,但 EditText 不反映更改。onCreateView如果從我的片段中調(diào)用上述代碼行,則 EditText 會(huì)更新。這是我的代碼:ClientProfileFragment.javapublic class ClientProfileFragment extends Fragment implements View.OnClickListener { private ClientProfile profile; //The BaseObservable private CPViewModel mViewModel; @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { ... ClientProfileFragmentBinding binding = DataBindingUtil.inflate(inflater, R.layout.client_profile_fragment, container, false); clientProfileView = binding.getRoot(); profile = new ClientProfile(); binding.setClientprofile(profile); final Observer<ClientProfile> clientProfileObserver = new Observer<ClientProfile>() { @Override public void onChanged(ClientProfile clientProfile) { profile.setClientName("Name"); //This line gets executed. Confirmed. } }; mViewModel.getClientProfile().observe(this, clientProfileObserver); //If I call profile.setClientName("Name"); from here then the corresponding //EditText changes to "Name". return clientProfileView; } @Override public void onClick(View v) { customerFindFuture.then(new FutureCallback<Response<String>>() { @Override public void onCompleted(Exception e, Response<String> result) { Gson gson = new GsonBuilder().serializeNulls().create(); ClientProfileWrapper clientProfileWrapper = gson.fromJson(result.getResult(), ClientProfileWrapper.class); profile = clientProfileWrapper.getData().get(0); mViewModel.getClientProfile().setValue(profile); } } } }}
1 回答

守著一只汪
TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
事實(shí)證明,我必須在為 egbinding.setClientprofile(profile);賦值后調(diào)用profile
profile = clientProfileWrapper.getData().get(0);
binding.setClientprofile(profile);
notifyPropertyChanged(BR._all);
這樣做會(huì)使用當(dāng)前所需的值填充 EditText 字段。
添加回答
舉報(bào)
0/150
提交
取消