Boa tarde! Um duvida noob ^^
Bom pessoal, estou com um probleminha aqui ao popular meu recyclerview através de um webservice. Na verdade eu não sei como fazer, pra juntar as duas coisas (colocar o que tem no banco lá n recycler). Já fiz umas pesquisas, mas o material que eu encontrei, apliquei no meu projeto e bugou tudo. =/
No momento meu código se encontra com o recycler sendo populado em tempo de execução:
public class FragmentListar extends Fragment {
private RecyclerView mRecycleView;
private ClienteAdapter mAdapter;
List<Cliente> mList;
private static final String BASE_URL = "http://localhost:8080/WEB-INF/webresources/cliente/";
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_listar, container, false);
mRecycleView = (RecyclerView) view.findViewById(R.id.listaClientes);
mRecycleView.setHasFixedSize(true);
mRecycleView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
LinearLayoutManager llm = (LinearLayoutManager) mRecycleView.getLayoutManager();
ClienteAdapter adapter = (ClienteAdapter) mRecycleView.getAdapter();
if (mList.size() == llm.findLastCompletelyVisibleItemPosition() + 1) {
List<Cliente> listAux = ((Home) getActivity()).getSetClienteList(10);
/*
for (int i = 0; i < listAux.size(); i++){
adapter.addListItem(listAux.get(i), mList.size());
}*/
}
}
});
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
llm.setOrientation(LinearLayoutManager.VERTICAL);
mRecycleView.setLayoutManager(llm);
mList = ((Home) getActivity()).getSetClienteList(10);
ClienteAdapter adapter = new ClienteAdapter(getActivity(), mList);
mRecycleView.setAdapter(adapter);
return view;
}
}
Aqui o Retrofit (que eu não sei nem onde eu aplico =x
public void getClientes(){
Gson g = new GsonBuilder().registerTypeAdapter(Cliente.class, new ClienteDec()).create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(g))
.build();
ClienteService service = retrofit.create(ClienteService.class);
Call<List<Cliente>> clientes = service.getClientes();
clientes.enqueue(new Callback<List<Cliente>>() {
@Override
public void onResponse(Call<List<Cliente>> call, Response<List<Cliente>> response) {
if (response.isSuccessful()){
List<Cliente> lista = response.body();
for (Cliente c: lista){
Log.d("LOG", c.getNome());
}
}
}
@Override
public void onFailure(Call<List<Cliente>> call, Throwable t) {
Toast.makeText(getContext(), "Erro: " + t.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
Eu só preciso de dois atributos do objeto Cliente (getNome, getEndereco). Alguém pode me dar uma luz? Explicar como eu faço pra aplicar o retrofit no recycler?
Desde já muito obrigado a todos!