package com.cheng.animationstudy.activity; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import com.cheng.animationstudy.C; import com.cheng.animationstudy.R; import com.cheng.animationstudy.customview.bagrefresh.BGAMoocStyleRefreshViewHolder; import com.cheng.animationstudy.customview.bagrefresh.BGARefreshLayout; import com.cheng.animationstudy.customview.bagrefresh.Divider; import com.cheng.animationstudy.customview.bagrefresh.NormalRecyclerViewAdapter; import com.cheng.animationstudy.customview.bagrefresh.RefreshModel; import com.cheng.utils.UiUtil; import com.cheng.utils.ViewFinder; import java.util.ArrayList; import java.util.List; import cn.bingoogolapple.androidcommon.adapter.BGAOnItemChildClickListener; import cn.bingoogolapple.androidcommon.adapter.BGAOnRVItemClickListener; import cn.bingoogolapple.androidcommon.adapter.BGAOnRVItemLongClickListener; import cn.bingoogolapple.bgabanner.BGABanner; public class BGANormalRecyclerViewActivity extends AppCompatActivity implements BGAOnRVItemClickListener, BGAOnRVItemLongClickListener, BGAOnItemChildClickListener, BGARefreshLayout.BGARefreshLayoutDelegate { private BGARefreshLayout mRefreshLayout; private BGABanner mBanner; private RecyclerView mDataRV; private NormalRecyclerViewAdapter mAdapter; private Handler mHandler; private int mNewPageNumber = 0; private int mMorePageNumber = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_bganormalrecyclerview); initView(); initListener(); initBanner(); initData(); } private void initView() { this.mRefreshLayout = ViewFinder.findViewById(this, R.id.rl_normalrecyclerview); this.mBanner = ViewFinder.findViewById(this, R.id.banner_normalrecyclerview); this.mDataRV = ViewFinder.findViewById(this, R.id.datarv_normalrecyclerview); } private void initListener() { this.mRefreshLayout.setDelegate(this); this.mAdapter = new NormalRecyclerViewAdapter(mDataRV); this.mHandler = new Handler(); this.mAdapter.setOnRVItemClickListener(this); this.mAdapter.setOnRVItemLongClickListener(this); this.mAdapter.setOnItemChildClickListener(this); } private void initBanner() { final List<View> views = new ArrayList<>(); final List<String> tips = new ArrayList<>(); for (int i = 0; i < 5; i++) { views.add(View.inflate(this, R.layout.item_bgabanner_img, null)); tips.add("我是图片00" + i); } mBanner.setViews(views); mBanner.setTips(tips); } private void initData() { List<RefreshModel> datas = new ArrayList<>(); for (int i=0; i<10; i++) { RefreshModel model = new RefreshModel("title"+i, "detail"+i); datas.add(model); } mAdapter.addMoreDatas(datas); mRefreshLayout.setRefreshViewHolder(new BGAMoocStyleRefreshViewHolder(this, true)); mDataRV.addItemDecoration(new Divider(this)); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); mDataRV.setLayoutManager(linearLayoutManager); mDataRV.setAdapter(mAdapter); } public void onClick(View v) { switch (v.getId()) { case R.id.btn_retweet: UiUtil.toast(this, "点击了转发"); break; case R.id.btn_comment: UiUtil.toast(this, "点击了评论"); break; case R.id.btn_praise: UiUtil.toast(this, "点击了赞"); break; } } @Override public void onItemChildClick(ViewGroup viewGroup, View childView, int position) { if (childView.getId() == R.id.tv_item_normal_delete) { mAdapter.removeItem(position); } } @Override public void onRVItemClick(ViewGroup viewGroup, View itemView, int position) { UiUtil.toast(this, "点击了条目 " + mAdapter.getItem(position).title); } @Override public boolean onRVItemLongClick(ViewGroup viewGroup, View itemView, int position) { UiUtil.toast(this, "长按了条目 " + mAdapter.getItem(position).title); return true; } @Override public void onBGARefreshLayoutBeginRefreshing(BGARefreshLayout refreshLayout) { mNewPageNumber++; if (mNewPageNumber > 4) { mRefreshLayout.endRefreshing(); UiUtil.toast(this, "没有最新数据了"); return; } mHandler.postDelayed(new Runnable() { @Override public void run() { RefreshModel model = new RefreshModel("Refresh Title", "Refresh Detail"); mAdapter.addFirstItem(model); mRefreshLayout.endRefreshing(); mDataRV.smoothScrollToPosition(0); } }, C.Int.IMITATE_NET_DELAYED); } @Override public boolean onBGARefreshLayoutBeginLoadingMore(BGARefreshLayout refreshLayout) { mMorePageNumber++; if (mMorePageNumber > 5) { mRefreshLayout.endLoadingMore(); UiUtil.toast(this, "没有更多数据了"); return false; } mHandler.postDelayed(new Runnable() { @Override public void run() { RefreshModel model = new RefreshModel("Refresh Title", "Refresh Detail"); mAdapter.addLastItem(model); mRefreshLayout.endLoadingMore(); } }, C.Int.IMITATE_NET_DELAYED); return true; } }