package ren.solid.ganhuoio.module.home.fragment;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration;
import java.util.List;
import me.drakeet.multitype.MultiTypeAdapter;
import ren.solid.ganhuoio.R;
import ren.solid.ganhuoio.api.GankService;
import ren.solid.ganhuoio.bean.GanHuoData;
import ren.solid.library.fragment.base.AbsListFragment;
import ren.solid.library.http.HttpResult;
import ren.solid.library.http.ServiceFactory;
import ren.solid.library.http.subscriber.HttpResultSubscriber;
import ren.solid.library.rx.RxUtils;
/**
* Created by _SOLID
* Date:2016/4/19
* Time:10:57
*/
public class CategoryListFragment extends AbsListFragment {
private String mType;
public static CategoryListFragment newInstance(String type) {
Bundle args = new Bundle();
args.putString("type", type);
CategoryListFragment fragment = new CategoryListFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mType = getArguments().getString("type");
}
@Override
protected void customConfig() {
addItemDecoration(new HorizontalDividerItemDecoration.Builder(getContext())
.color(ContextCompat.getColor(getContext(), R.color.list_divider_color))
.sizeResId(R.dimen.list_divider_height)
.build());
}
@Override
public void loadData(final int pageIndex) {
if (TextUtils.isEmpty(mType)) {
showError(new Exception("mType is null"));
return;
}
ServiceFactory.getInstance().createService(GankService.class)
.getGanHuo(mType, pageIndex)
.compose(this.<HttpResult<List<GanHuoData>>>bindToLifecycle())
.compose(RxUtils.<HttpResult<List<GanHuoData>>>defaultSchedulers_single())
.subscribe(new HttpResultSubscriber<List<GanHuoData>>() {
@Override
public void _onSuccess(List<GanHuoData> list) {
onDataSuccessReceived(pageIndex, list);
}
@Override
public void _onError(Throwable e) {
showError(new Exception(e));
}
});
}
@Override
protected int getInitPageIndex() {
return 1;
}
@Override
protected MultiTypeAdapter getAdapter() {
return new MultiTypeAdapter(getItems()) {
@NonNull
@Override
public Class onFlattenClass(@NonNull Object item) {
if (item instanceof GanHuoData) {
GanHuoData bean = (GanHuoData) item;
if (bean.getImages() != null && bean.getImages().size() > 0) {
return GanHuoData.Image.class;
} else {
return GanHuoData.Text.class;
}
}
return super.onFlattenClass(item);
}
};
}
}