android 上拉刷新下拉加载更多(优化版)

demo下载地址:

http://download.csdn.net/download/qq_33063279/10231699

下面是我自己的使用:


import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.google.gson.Gson;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import cn.gotocity.zhoubt.MyApplication;
import cn.gotocity.zhoubt.R;
import cn.gotocity.zhoubt.activity.BaseActivity;
import cn.gotocity.zhoubt.activity.login.LoginActivity;
import cn.gotocity.zhoubt.adapter.MainAnnouncementAdapter;
import cn.gotocity.zhoubt.bean.mainBean.AnnounBizDataBean;
import cn.gotocity.zhoubt.bean.mainBean.AnnouncementResponse;
import cn.gotocity.zhoubt.lfrecyclerview.LFRecyclerView;
import cn.gotocity.zhoubt.lfrecyclerview.OnItemClickListener;
import cn.gotocity.zhoubt.net.NetWorks;
import cn.gotocity.zhoubt.url.BaseUrl;
import cn.gotocity.zhoubt.utils.LogUtil;
import cn.gotocity.zhoubt.utils.ToastUtil;
import rx.Observer;

/**
 * Created by Administrator on 2017/12/29.
 */

public class MainAnnouncementActivity extends BaseActivity implements OnItemClickListener, LFRecyclerView.LFRecyclerViewListener {
    @BindView(R.id.title_back)
    LinearLayout title_back;
    @BindView(R.id.title_txt)
    TextView title_txt;
    @BindView(R.id.recycleview)
    LFRecyclerView recycleview;

    private Context context;
    String createTime = "";
    private String fresh = "";
    private List<AnnounBizDataBean> BizData = new ArrayList<>();
    private MainAnnouncementAdapter mainAnnouncementAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_announcement);
        ButterKnife.bind(this);
        context = this;
        initData();
        initLinear();
    }

    private void initData() {
        title_back.setVisibility(View.VISIBLE);
        title_txt.setText("公告");
        title_txt.setVisibility(View.VISIBLE);

        recycleview.setLoadMore(true);
        recycleview.setRefresh(true);
        recycleview.setAutoLoadMore(true);
        recycleview.setLFRecyclerViewListener(this);
        recycleview.setItemAnimator(new DefaultItemAnimator());
        mainAnnouncementAdapter = new MainAnnouncementAdapter(context, BizData);
        recycleview.setAdapter(mainAnnouncementAdapter);
        BizData.clear();
        getData();
    }

    private void getData() {
        NetWorks.getAnnouncement(
                BaseUrl.getAnnouncement,
                createTime,
                5,
                new Observer<AnnouncementResponse>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {
                        if (e.getMessage().equals("HTTP 401 Unauthorized")) {
                            ToastUtil.showToast(context, "登录凭证失效,请重新登录");
                            Intent intent = new Intent(context, LoginActivity.class);
                            startActivity(intent);
                            finish();
                        }
                    }

                    @Override
                    public void onNext(AnnouncementResponse announcementResponse) {
                        Gson gson = new Gson();
                        String response = gson.toJson(announcementResponse);
                        LogUtil.showLog("-------response----" + response);
                        if (fresh.equals("1")) {
                            BizData.clear();
                            recycleview.stopRefresh(true);
                        }
                        if (announcementResponse.getBizCount() > 0) {
                            BizData.addAll(announcementResponse.getBizData());
                            createTime = BizData.get(BizData.size() - 1).getCreateTime();
                            mainAnnouncementAdapter.notifyDataSetChanged();
                        } else {
                            recycleview.stopLoadMore();
                            recycleview.setLoadMore(false);
                        }
                    }
                });
    }

    private void initLinear() {
        title_back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

        mainAnnouncementAdapter.setOnItemClickListener(new MainAnnouncementAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                MyApplication.announBizDataBean = BizData.get(position);
                Intent intent = new Intent(context, MainAnnouncementDetailActivity.class);
                startActivity(intent);
            }
        });
    }

    @Override
    public void onRefresh() {
        LogUtil.showLog("----onRefresh()--------");
        recycleview.setLoadMore(true);
        createTime = "";
        fresh = "1";
        getData();
    }

    @Override
    public void onLoadMore() {
        LogUtil.showLog("----onRefresh()--------");
        recycleview.stopRefresh(false);
        fresh = "";
        getData();
    }

    @Override
    public void onClick(int position) {

    }

    @Override
    public void onLongClick(int po) {

    }
} 

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.widget.TextView;

import java.util.List;

import cn.gotocity.zhoubt.R;
import cn.gotocity.zhoubt.bean.mainBean.AnnounBizDataBean;
import cn.gotocity.zhoubt.utils.LogUtil;


public class MainAnnouncementAdapter extends RecyclerView.Adapter<MainAnnouncementAdapter.RegisterCenterHolder> implements View.OnClickListener {
    private Context context;
    private List<AnnounBizDataBean> BizData;
    private Drawable drawable;
    private String ncontent;

    public MainAnnouncementAdapter(Context context, List<AnnounBizDataBean> BizData) {
        this.context = context;
        this.BizData = BizData;
    }

    private OnItemClickListener mOnItemClickListener = null;

    //define interface
    public static interface OnItemClickListener {
        void onItemClick(View view, int position);
    }

    @Override
    public RegisterCenterHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_announcement, parent, false);
        RegisterCenterHolder hodle = new RegisterCenterHolder(view);
        //将创建的View注册点击事件
        view.setOnClickListener(this);
        return hodle;
    }

    //绑定数据
    @Override
    public void onBindViewHolder(final RegisterCenterHolder holder, final int position) {
        LogUtil.showLog("----BizData.get(position).getContents()----"+BizData.get(position).getContents());
        //添加数据
        holder.tv_news.setText(BizData.get(position).getTitle());
        String createTime = BizData.get(position).getCreateTime();
        createTime = createTime.replace("T"," ");
        createTime = createTime.substring(0,createTime.indexOf("."));
        holder.tv_create_time.setText(createTime);
        holder.itemView.setTag(position);
    }

    @Override
    public int getItemCount() {
        return BizData.size();
    }

    class RegisterCenterHolder extends RecyclerView.ViewHolder {
        TextView tv_news;
        TextView tv_create_time;
        WebView wb_html;

        public RegisterCenterHolder(View itemView) {
            super(itemView);
            tv_news = (TextView) itemView.findViewById(R.id.tv_news);
            tv_create_time=(TextView)itemView.findViewById(R.id.tv_create_time);
            wb_html = (WebView) itemView.findViewById(R.id.wb_html);
        }
    }

    @Override
    public void onClick(View v) {
        if (mOnItemClickListener != null) {
            //注意这里使用getTag方法获取position
            mOnItemClickListener.onItemClick(v, (int) v.getTag());
        }
    }

    public void setOnItemClickListener(OnItemClickListener listener) {
        this.mOnItemClickListener = listener;
    }
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值