【发布时间】:2016-07-20 10:16:53
【问题描述】:
我想在我的应用程序中实现“新”数据绑定,但我被卡住了。我有一个保存联系人的数据库,因此我需要从另一个片段中获取数据并将它们显示在回收站视图中。 SO:带有回收器视图的片段->单击AddButton->使用editTexts打开新片段->填充editTexts->保存到数据库->在上一个片段中显示(使用该回收器视图) 我已经完成了适配器,但我不知道如何在我的片段中设置它。请问你能帮帮我吗?
型号
public class Contact extends SugarRecord {
public String name;
private String number;
private String email;
private boolean isFavourite;
public Contact() {
}
public Contact(String name, String email, String number, Boolean isFavourite) {
this.name = name;
this.email = email;
this.number = number;
this.isFavourite = isFavourite;
}
public void setName(String name) {
this.name = name;
}
public void setEmail(String email) {
this.email = email;
}
public void setNumber(String number) {
this.number = number;
}
public void setFavourite(Boolean isFavourite) {
this.isFavourite = isFavourite;
}
@Bindable
public String getName() {
return name;
}
@Bindable
public String getEmail() {
return email;
}
@Bindable
public String getNumber() {
return number;
}
@Bindable
public boolean getFavourite() {
return isFavourite;
}
}
适配器
public class ContactsRecyclerAdapter extends RecyclerView.Adapter<ContactsRecyclerAdapter.BindingHolder> {
private List<Contact> mContacts;
public static class BindingHolder extends RecyclerView.ViewHolder {
private ViewDataBinding binding;
public BindingHolder(View rowView) {
super(rowView);
binding = DataBindingUtil.bind(rowView);
}
public ViewDataBinding getBinding() {
return binding;
}
}
public ContactsRecyclerAdapter(List<Contact> recyclerUsers) {
this.mContacts = recyclerUsers;
}
@Override
public BindingHolder onCreateViewHolder(ViewGroup parent, int type) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_item_contact, parent, false);
BindingHolder holder = new BindingHolder(view);
return holder;
}
@Override
public void onBindViewHolder(BindingHolder holder, int position) {
final Contact contact = mContacts.get(position);
holder.getBinding().setVariable(BR.contact, contact);
holder.getBinding().executePendingBindings();
}
@Override
public int getItemCount() {
return mContacts.size();
}
}
我想要回收站视图的片段
public class ContactListFragment extends Fragment implements View.OnClickListener {
private static final String NEWCONTACT = "newcontact";
FloatingActionButton fabButton;
SearchView searchView;
public static ContactListFragment newInstance() {
Bundle args = new Bundle();
ContactListFragment fragment = new ContactListFragment();
fragment.setArguments(args);
return fragment;
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_contact_list, container, false);
return view;
}
----- other stuff in the fragment ------
【问题讨论】:
-
在前一个片段的 onResume() 方法中更新您的联系人列表,然后在适配器上调用 notifyDataSetChanged()。
-
能否详细描述一下?
-
您必须在 mContacts(即 List
) 对象中更新新创建的联系人。 -
好的,谢谢。以及在哪里调用 notifyDataSetChanged?
-
更新联系人对象后,立即调用 notifyDataSetChanged()。
标签: android database android-fragments data-binding android-recyclerview