package com.anthony.app.module.newslist;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import com.anthony.app.R;
import com.anthony.app.dagger.component.ActivityComponent;
import com.anthony.library.base.WebviewDetailsActivity;
import com.anthony.library.data.bean.NewsItem;
import com.anthony.library.data.bean.NormalJsonInfo;
import com.anthony.library.data.dao.NewsItemDao;
import com.anthony.rvhelper.adapter.MultiItemTypeAdapter;
import com.anthony.rvhelper.divider.RecycleViewDivider;
import java.util.List;
import javax.inject.Inject;
/**
* Created by Anthony on 2016/9/9.
* Class Note:
* normal news list fragment
*/
public class NewsListFragment extends AbsListFragment {
@Inject
NewsItemDao newsItemDao;
@Override
protected RecyclerView.LayoutManager getLayoutManager() {
return new LinearLayoutManager(getActivity());
}
@Override
protected RecyclerView.ItemDecoration getItemDecoration() {
return new RecycleViewDivider(mContext, LinearLayoutManager.VERTICAL, 4, R.color.gz_background_gray);
}
@Override
protected MultiItemTypeAdapter getAdapter() {
return new NewsMultiAdapter(mContext);
}
@Override
protected MultiItemTypeAdapter.OnItemClickListener getItemListener() {
return new MultiItemTypeAdapter.OnItemClickListener<NewsItem>() {
@Override
public void onItemClick(View view, RecyclerView.ViewHolder holder,
NewsItem item, int position) {
if (item.getUrl().endsWith(".json")) { //if suffix is json end ,load list data ,else load webview
// todo
} else {
WebviewDetailsActivity.start(mContext, item.getTitle(), item.getUrl());
}
}
@Override
public boolean onItemLongClick(View view, RecyclerView.ViewHolder holder,
NewsItem o, int position) {
return false;
}
};
}
@Override
protected String getRequestUrl(int index) {
if (index == 0) {
return getFragmentUrl();
} else {
String prefix = getFragmentUrl().substring(0, getFragmentUrl().lastIndexOf("."));
return prefix + "_" + String.valueOf(index) + ".json";
}
}
@Override
protected void initDagger2(ActivityComponent activityComponent) {
activityComponent.inject(this);
}
@Override
protected List parseData(NormalJsonInfo jsonInfo) {
return jsonInfo.datas;
}
@Override
protected List parseTopic(NormalJsonInfo jsonInfo) {
return jsonInfo.topic_datas;
}
@Override
protected int parsePageCount(NormalJsonInfo jsonInfo) {
return Integer.parseInt(jsonInfo.page_info.page_count);
}
@Override
protected void restoreData(List data) {
restore(data, false);
}
@Override
protected void restoreTopic(List data) {
restore(data, true);
}
private void restore(List data, boolean isTopic) {
if (data == null || data.size() == 0) {
return;
}
List<NewsItem> list = data;
for (NewsItem e : list) {
// e.setChannel(mChannel);
e.setTopic(isTopic);
}
for (NewsItem e : list) {
if (isExistInDb(e)) {
newsItemDao.update(e);
} else {
newsItemDao.add(e);
}
}
}
private boolean isExistInDb(NewsItem e) {
List<NewsItem> list = newsItemDao.queryByColumn("id", e.getId());
return list != null && list.size() > 0;
}
// @Override
// public String getFragmentUrl() {
// return Constants.MAIN_PAGE_URL;
// }
}