在使用SmartRefreshLayout中,用onResume方法会加载重复数据以及解决

先描述一下问题,就是在使用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);
    }
}

猜你喜欢

转载自blog.csdn.net/zhangkaiyazky/article/details/84837011