Ich möchte "neue" Datenbindung in meiner App implementieren, aber ich bin fest. Ich habe eine Datenbank, wo ich die Kontakte speichere, also muss ich Daten von einem anderen Fragment nehmen und sie in der Recycleransicht anzeigen. SO: Fragment mit Recycler-View -> klicken Sie auf AddButton -> öffnen Sie ein neues Fragment mit editTexts -> füllen Sie die editTexts -> Speichern in der Datenbank -> zeigen im vorherigen Fragment (mit dieser Recycler-Ansicht) Ich habe Adapter aber ich getan Ich weiß nicht, wie ich es in mein Fragment setzen soll. Kannst du mir bitte helfen?Android Datenbindung mit Recycler anzeigen
Modell
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, wo ich die Recycler Ansicht
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 ------
Aktualisieren Sie Ihre Kontaktliste in onResume() -Methode des vorherigen Fragments und rufen Sie dann notifyDataSetChanged() auf dem Adapter auf. –
Können Sie es bitte im Detail beschreiben? – Stepan
Sie müssen den neu erstellten Kontakt in Ihrem mContacts-Objekt (z. B. List) aktualisieren. –