先描述一下问题,就是在使用SmartRefreshLayout本身是没有问题的,但是我需要在进入这个界面的时候就进行加载,就用到了onResume();在这个方法里我进行了网络请求数据,但是出现了这么一个问题,在我点击跳转回来的数据加载第二页就会多出来几条数据,下面标红的是我的解决方法。
首先是XML:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.scwang.smartrefresh.layout.SmartRefreshLayout android:id="@+id/refreshLayout" android:layout_width="match_parent" android:layout_height="match_parent" app:srlEnableFooterFollowWhenLoadFinished="true"> <ListView android:id="@+id/list_records" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="@dimen/dimen_9dp" android:divider="@color/dividerColor_view" android:dividerHeight="@dimen/dp_8" /> </com.scwang.smartrefresh.layout.SmartRefreshLayout> <com.dyh.library.widget.NoDataView android:id="@+id/relat_not" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" /> </RelativeLayout>
Activity:
package com.dyhoa.school.uinew.earnmoney;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import com.dyh.frame.util.JsonUtils;
import com.dyh.library.base.PageHelperNew;
import com.dyh.library.base.TitleFragmentActivity;
import com.dyh.library.base.net.DefaultStringRequestNew;
import com.dyh.library.base.net.ResponseListenerNew;
import com.dyh.library.base.net.VolleyUtil;
import com.dyh.library.util.UserHelper;
import com.dyh.library.widget.NoDataView;
import com.dyhoa.school.R;
import com.dyhoa.school.global.HostStudentNew;
import com.dyhoa.school.ui.director.BusinessMessageActivity;
import com.dyhoa.school.uinew.adapter.RedPacketRecordsAdapter;
import com.dyhoa.school.uinew.earnmoney.bean.RedRecordsBean;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.scwang.smartrefresh.layout.header.ClassicsHeader;
import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import java.util.HashMap;
/**
* Created by ljg on 2018/11/21.
* 红包记录
*/
public class RedPacketRecordsActivity extends TitleFragmentActivity {
private ListView listrds;
private SmartRefreshLayout refreshLayout;
private NoDataView noDateLayout;
private PageHelperNew pageHelper;
private RedPacketRecordsAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addLayout(R.layout.activity_red_packect_records);
initView();
pageHelper = PageHelperNew.getNewInstance();
pageHelper.setPageSize(10);
refreshLayout.setRefreshHeader(new ClassicsHeader(mContext));
refreshLayout.setRefreshFooter(new ClassicsFooter(mContext));
refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(@NonNull RefreshLayout layout) {
refreshLayout.setNoMoreData(false);
pageHelper.pullDown();
reqDatalist();
refreshLayout.finishRefresh();
}
});
refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore(@NonNull RefreshLayout layout) {
if (pageHelper.pullUp(refreshLayout)) {
reqDatalist();
}
}
});
adapter = new RedPacketRecordsAdapter(mContext, null);
listrds.setAdapter(adapter);
// Gourl() 文章链接 Content() 内容 ShareImg() 分享图片 ShareUrl() 分享链接 ShareSwitch() 判断分享是链接还是图片
listrds.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
RedRecordsBean.DataEntity.PageEntity entity = (RedRecordsBean.DataEntity.PageEntity) parent.getAdapter().getItem(position);
if (entity.getPacketType() == 4) {//转发红包
if (!TextUtils.isEmpty(entity.getGourl())) {
HtmlForwardActivity.toMe(mContext, entity.getArticleId(), entity.getPacketId(), entity.getGourl(), entity.getTitle(), entity.getContent(), entity.getIcon(), entity.getShareUrl(), entity.getShareImg(), entity.getShareSwitch(), true);
}
} else if (entity.getPacketType() == 5) {//阅读红包
if (!TextUtils.isEmpty(entity.getGourl())) {
Intent intent = new Intent(mContext, HtmlReadingActivity.class);
intent.putExtra("packetId", entity.getPacketId());
intent.putExtra("goUrl", entity.getGourl());
mContext.startActivity(intent);
overridePendingTransition(R.anim.bottom_in, R.anim.bottom_silent);
}
} else if (entity.getPacketType() == 6) {//商讯红包
Intent intent = new Intent(mContext, BusinessMessageActivity.class);
intent.putExtra("flag", 1);
intent.putExtra("packetId", entity.getPacketId());
intent.putExtra("shareUrl", entity.getShareUrl());
intent.putExtra("title", entity.getTitle());
intent.putExtra("content", entity.getContent());
intent.putExtra("icon", entity.getIcon());
intent.putExtra("shareImg", entity.getShareImg());
intent.putExtra("shareSwich", entity.getShareSwitch());
startActivity(intent);
}
}
});
}
@Override
protected void onResume() {
super.onResume();
refreshLayout.setNoMoreData(false);
pageHelper.pullDown();
reqDatalist();
}
private void initView() {
listrds = (ListView) findViewById(R.id.list_records);
noDateLayout = (NoDataView) findViewById(R.id.relat_not);
refreshLayout = (SmartRefreshLayout) findViewById(R.id.refreshLayout);
}
@Override
protected void initTitileBar() {
titleLayout.showAll(R.string.red_packet, R.string.historical, new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(HistoricalRecordsActivity.class);
}
});
}
private void reqDatalist() {
HashMap<String, String> map = new HashMap<>();
map.put("mid", UserHelper.getUUUID() + "");
map.put("cityId", UserHelper.getCity() + "");
map.put("pageSize", pageHelper.getPageSize() + "");
map.put("pageIndex", pageHelper.getCurPage() + "");
String path = pageHelper.getUrlNull(HostStudentNew.RED_PACKECT_RECORDS, map);
DefaultStringRequestNew req = new DefaultStringRequestNew(mContext, path, new ResponseListenerNew(mContext) {
@Override
public void onSuccess(String response) {
RedRecordsBean detailsBean = JsonUtils.fromJson(response, RedRecordsBean.class);
if (detailsBean != null) {
if (detailsBean.getResult() == 0) {
RedRecordsBean.DataEntity data = detailsBean.getData();
if (data != null) {
pageHelper.successSmart(refreshLayout, noDateLayout, data.getPage(), data.getPageCount(), adapter);
}
} else {
showToast(detailsBean.getMessage());
}
}
if (refreshLayout != null)
refreshLayout.finishLoadMore();
}
});
VolleyUtil.getInstance().addToRequestQueue(req);
}
}