0

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 ------ 
+0

Aktualisieren Sie Ihre Kontaktliste in onResume() -Methode des vorherigen Fragments und rufen Sie dann notifyDataSetChanged() auf dem Adapter auf. –

+0

Können Sie es bitte im Detail beschreiben? – Stepan

+0

Sie müssen den neu erstellten Kontakt in Ihrem mContacts-Objekt (z. B. List ) aktualisieren. –

Antwort

0

Versuchen zu initialisieren RecyclerView in onCreateView Verfahren von ContactListFragment wie unter

wollen
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)); 
    } 

Auf diese Weise können Sie den Adapter auf Recycler-Ansicht in Fragment festlegen.

Verwandte Themen