您的位置:首页 > 移动开发 > Android开发

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

2018-01-30 15:10 323 查看
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
9e1f
.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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: