package com.anthony.app.module.wechatlist; import android.content.Context; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.widget.ImageView; import com.anthony.app.R; import com.anthony.app.dagger.DaggerActivity; import com.anthony.app.dagger.component.ActivityComponent; import com.anthony.library.base.WebviewDetailsActivity; import com.anthony.library.data.net.HttpSubscriber; import com.anthony.pullrefreshview.PullToRefreshView; import com.anthony.rvhelper.adapter.CommonAdapter; import com.anthony.rvhelper.base.ViewHolder; import com.anthony.rvhelper.divider.RecycleViewDivider; import com.bumptech.glide.Glide; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import rx.functions.Action0; /** * Created by Anthony on 2016/11/30. * Class Note: * 微信文章的界面,支持下拉刷新和上拉加载更多 * <p> * <p> * todo 数据库存储 * todo 封装上啦下拉+recyclerView+adapter的实现 */ public class WechatListActivity extends DaggerActivity { @BindView(R.id.recycleView) RecyclerView recycleView; @BindView(R.id.ptr) PullToRefreshView ptr; @BindView(R.id.toolbar) Toolbar toolbar; private WechatItemAdapter mAdapter; private static final int PAGE_NUM = 10; private static final int INIT_PAGE_INDEX = 1; private int currentPageIndex = INIT_PAGE_INDEX; @Override protected void initViewsAndEvents(Bundle savedInstanceState) { //show loading but not include toolbar List<Integer> skipIds = new ArrayList<>(); skipIds.add(com.anthony.library.R.id.toolbar); showLoading(skipIds); setToolBar(toolbar, "微信文章列表"); ptr.setListener(new PullToRefreshView.OnRefreshListener() { @Override public void onRefresh() { getWechatData(PAGE_NUM, INIT_PAGE_INDEX); } @Override public void onLoadMore() { getWechatData(PAGE_NUM, currentPageIndex + 1); } }); mAdapter = new WechatItemAdapter(mContext); recycleView.addItemDecoration(new RecycleViewDivider(mContext, LinearLayoutManager.VERTICAL)); recycleView.setLayoutManager(new LinearLayoutManager(mContext)); recycleView.setAdapter(mAdapter); getWechatData(PAGE_NUM, INIT_PAGE_INDEX); } private void getWechatData(int num, int page) { getDataRepository() .getWechatData(num, page) .doOnTerminate(new Action0() { @Override public void call() { ptr.onFinishLoading(); } }) .subscribe(new HttpSubscriber<List<WXItemBean>>() { @Override public void onNext(List<WXItemBean> itemList) { onDataReceived(page, itemList); } @Override public void onError(Throwable e) { super.onError(e); showToast("load error"); } }); } private void onDataReceived(int page, List<WXItemBean> itemList) { boolean isRefresh = (page == INIT_PAGE_INDEX); if (isRefresh) { mAdapter.clearData(); } else { currentPageIndex += 1; } mAdapter.addDataAll(itemList); mAdapter.notifyDataSetChanged(); showContent(); } @Override protected int getContentViewID() { return R.layout.prj_pull_list; } @Override protected void injectDagger(ActivityComponent activityComponent) { activityComponent.inject(this); } public class WechatItemAdapter extends CommonAdapter<WXItemBean> { public WechatItemAdapter(Context context) { super(context, R.layout.prj_item_weichat); } @Override protected void convert(ViewHolder holder, final WXItemBean item, int position) { Glide.with(mContext).load(item.getPicUrl()).crossFade().into((ImageView) holder.getView(R.id.iv_wechat_item_image)); holder.setText(R.id.tv_wechat_item_title, item.getTitle()) .setText(R.id.tv_wechat_item_from, item.getDescription()) .setText(R.id.tv_wechat_item_time, item.getCtime()) .setOnClickListener(R.id.ll_click, v -> { WebviewDetailsActivity.start(mContext, item.getTitle(), item.getUrl()); }); } } }