[英]Android data-binding with recycler view
I would like to implement "new" data binding in my app, but I'm stuck. 我想在我的应用程序中实现“新”数据绑定,但是我遇到了麻烦。 I have a database where I save the contacts, so I need to take data from another fragment and show them in the recycler view.
我有一个保存联系人的数据库,因此我需要从另一个片段中获取数据并将其显示在回收者视图中。 SO: fragment with recycler view -> click on AddButton -->open new fragment with editTexts -> fill the editTexts -> save to database -> show in previous fragment (with that recycler view) I've done Adapter but I don't know ho to set it in my fragment.
所以:片段与回收站视图->单击AddButton->用editTexts打开新片段->填充editTexts->保存到数据库->在先前的片段中显示(使用那个回收站视图)我已经完成了适配器,但是我没有不知道该把它放在我的片段中。 Could you help me please?
请问你能帮帮我吗?
Model 模型
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;
}
}
Adapter 适配器
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();
}
}
Fragment where I want the recycler view 我想要回收者视图的片段
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 ------
Try to initialise RecyclerView
in onCreateView
method of ContactListFragment
like below 尝试在
ContactListFragment
onCreateView
方法中初始化RecyclerView
,如下所示
View view = inflater.inflate(R.layout.fragment_contact_list, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
if(recyclerView != null) {
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(new ContactsRecyclerAdapter(recyclerUsers));
}
this way you can set adapter to recycler view in fragment. 这样,您可以将适配器设置为片段中的回收站视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.