繁体   English   中英

Android数据绑定与回收者视图

[英]Android data-binding with recycler view

我想在我的应用程序中实现“新”数据绑定,但是我遇到了麻烦。 我有一个保存联系人的数据库,因此我需要从另一个片段中获取数据并将其显示在回收者视图中。 所以:片段与回收站视图->单击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 ------

尝试在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));
    }

这样,您可以将适配器设置为片段中的回收站视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM