package io.bxbxbai.zhuanlan.ui;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.util.ArrayMap;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import butterknife.ButterKnife;
import io.bxbxbai.common.view.CircularLoadingView;
import io.bxbxbai.zhuanlan.R;
import io.bxbxbai.zhuanlan.adapter.PeopleListAdapter;
import io.bxbxbai.zhuanlan.bean.User;
import io.bxbxbai.zhuanlan.bean.UserEntity;
import io.bxbxbai.zhuanlan.core.Api;
import io.bxbxbai.zhuanlan.core.DataCenter;
import io.bxbxbai.zhuanlan.core.SimpleCallback;
import io.bxbxbai.zhuanlan.core.ZhuanLanApi;
import java.util.List;
import java.util.Map;
/**
* @author bxbxbai
*/
public class PeopleListFragment extends Fragment {
private RecyclerView recyclerView;
private CircularLoadingView mLoadingView;
private PeopleListAdapter mAdapter;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.common_list, container, false);
recyclerView = ButterKnife.findById(v, R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
mLoadingView = ButterKnife.findById(v, R.id.v_loading);
return v;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mAdapter = new PeopleListAdapter(getActivity());
recyclerView.setAdapter(mAdapter);
getUserIdList();
}
private void getUserIdList() {
String[] ids = getActivity().getResources().getStringArray(R.array.people_ids);
Map<String, UserEntity> map = new ArrayMap<>();
List<UserEntity> list = DataCenter.instance().queryAll(UserEntity.class);
for (UserEntity entity : list) {
map.put(entity.getSlug(), entity);
}
for (String id : ids) {
UserEntity entity = map.get(id);
if (entity != null) {
mAdapter.addItem(entity);
showListView();
} else {
makeRequest(id);
}
}
}
private void makeRequest(String id) {
Api api = ZhuanLanApi.getZhuanlanApi();
api.getUser(id).enqueue(new SimpleCallback<User>() {
@Override
public void onResponse(User user, int code, String msg) {
showListView();
mAdapter.addItem(user.toUserEntity());
DataCenter.instance().save(user.toUserEntity());
}
});
}
private void showListView() {
recyclerView.setVisibility(View.VISIBLE);
mLoadingView.setVisibility(View.GONE);
}
public static PeopleListFragment newInstance() {
Bundle bundle = new Bundle();
PeopleListFragment fragment = new PeopleListFragment();
fragment.setArguments(bundle);
return fragment;
}
}