crystal-wallet-android/app/src/main/java/cy/agorise/crystalwallet/fragments/ContactsFragment.java

106 lines
3.5 KiB
Java
Raw Normal View History

package cy.agorise.crystalwallet.fragments;
import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.Observer;
import android.arch.lifecycle.ViewModelProviders;
import android.arch.paging.PagedList;
import android.os.Bundle;
2018-07-09 23:33:42 +00:00
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
2018-07-10 21:19:10 +00:00
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
2018-09-24 20:07:21 +00:00
import android.widget.TextView;
import butterknife.BindView;
import butterknife.ButterKnife;
import cy.agorise.crystalwallet.R;
import cy.agorise.crystalwallet.models.Contact;
import cy.agorise.crystalwallet.viewmodels.ContactListViewModel;
2018-07-10 21:19:10 +00:00
import cy.agorise.crystalwallet.views.ContactListAdapter;
public class ContactsFragment extends Fragment {
2018-07-10 22:43:40 +00:00
@BindView(R.id.rvContacts)
RecyclerView rvContacts;
2018-07-10 21:19:10 +00:00
@BindView(R.id.tvNoContacts)
TextView tvNoContacts;
2018-09-24 20:07:21 +00:00
2018-07-10 21:19:10 +00:00
ContactListAdapter adapter;
FloatingActionButton fabAddContact;
public ContactsFragment() {
// Required empty public constructor
}
public static ContactsFragment newInstance() {
ContactsFragment fragment = new ContactsFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
2018-07-09 23:33:42 +00:00
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
2018-07-10 21:19:10 +00:00
View view = inflater.inflate(R.layout.fragment_contacts, container, false);
ButterKnife.bind(this, view);
// Configure RecyclerView and its adapter
2018-07-10 22:43:40 +00:00
rvContacts.setLayoutManager(new LinearLayoutManager(getContext()));
2018-07-10 21:19:10 +00:00
adapter = new ContactListAdapter();
2018-07-10 22:43:40 +00:00
rvContacts.setAdapter(adapter);
fabAddContact = getActivity().findViewById(R.id.fabAddContact);
// Hides the fab when scrolling down
rvContacts.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
// Scroll down
if(dy > 0 && fabAddContact.isShown())
fabAddContact.hide();
// Scroll up
if(dy < 0 && !fabAddContact.isShown())
fabAddContact.show();
}
});
2018-07-10 21:19:10 +00:00
// Gets contacts LiveData instance from ContactsViewModel
ContactListViewModel contactListViewModel =
ViewModelProviders.of(this).get(ContactListViewModel.class);
LiveData<PagedList<Contact>> contactsLiveData = contactListViewModel.getContactList();
contactsLiveData.observe(this, new Observer<PagedList<Contact>>() {
@Override
public void onChanged(@Nullable PagedList<Contact> contacts) {
2018-07-10 21:19:10 +00:00
adapter.submitList(contacts);
2018-09-24 20:07:21 +00:00
if(contacts != null && contacts.size() > 0){
tvNoContacts.setVisibility(View.INVISIBLE);
2018-09-24 20:07:21 +00:00
}
else{
tvNoContacts.setVisibility(View.VISIBLE);
2018-09-24 20:07:21 +00:00
}
}
});
2018-07-10 21:19:10 +00:00
return view;
}
}