Imprimir este capítuloImprimir este capítulo

Livro 3 - Projeto Agenda de Contatos - Parte 2

6. Finalizando a integração entre telas e exibindo dados fictícios

Para finalizar o aplicativo vamos configurar o fragmento inicial para exibir uma lista com alguns dados fictícios. Assim, será possível finalizar a transição entre as telas. Para tanto, modifique a classe MainFragment como a seguir.

package ...

import ...

public class MainFragment extends Fragment {

private MainViewModel mainViewModel;

// adaptor para ser uma usada com a lista de contatos
ContactsAdapter contactsAdapter;

...

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.main_fragment, container, false);
// cria uma referência a recyclerview
RecyclerView recyclerView = view.findViewById(R.id.recyclerView);
// Configura arecycler view para exibir os itens na vertical
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity().getBaseContext()));
// anexa um ItemDecorator personalizado para desenhar divisórias entre os itens da lista
recyclerView.addItemDecoration(new ItemDivider(getContext()));
// cria um adaptador para preencher os dados da lista
// o adaptar tambem vincula uma ação para quando for clicado sobre um contato
contactsAdapter = new ContactsAdapter(new ContactsAdapter.ContactClickListener() {
@Override
public void onClick(int contactID) {
// Quando clicado sobre um contato, o método onContactSelected é invocado
onContactSelected(contactID);
}
});
recyclerView.setAdapter(contactsAdapter); // vincula o adaptador à lista
// cria uma referencia ao FAB e vincula uma ação
FloatingActionButton addButton = view.findViewById(R.id.addButton);
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Quando for clicado no FAB o método onAddContact será invocado
onAddContact();
}
});
return view;
}

...

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mainViewModel = new ViewModelProvider(this).get(MainViewModel.class);
// TODO: Use the ViewModel

ArrayList<Contact> list = new ArrayList<Contact>();
list.add(new Contact(1,"Fulano", "1234", "a@a.com"));
list.add(new Contact(2,"Beltrano", "4567", "b@a.com"));
list.add(new Contact(3,"Ciclano", "8888", "c@a.com"));
contactsAdapter.setContacts(list);
}

}

As modificações incluem a inicialização e configuração do adaptador para a RecylerView e a adição três contatos fictícios no método onActivityCreated. Neste método, uma lista de contatos é criada e repassada ao adaptador através do método setContacts. Lembre que o método setContacts recebe uma lista de valores do tipo contato, configura seus elementos gráficos e solicita o redesenho da lista na tela. 

Agora, com a segunda parte do projeto podemos rodar o aplicativo e navegar entre as telas corretamente. Ainda não serão cadastrados nem exibidos os dados corretos de cada contato, mas podemos visualizar as telas e conferir o desenho da interface gráfica. Na próxima etapa do projeto vamos configurar o banco de dados para a Agenda de Contatos e implementar perfeitamente as funcionalidades de criar um novo contato, exibir os dados de um contato existente, editar um contato já existente e excluir um contato selecionado. 

Até mais a próxima etapa!