安卓PullToRefresh自动下拉加载刷新实现

在处理Tab按钮切换导致数据重复加载的问题时,发现控件无法区分下拉刷新与上拉加载更多。解决方案是引入一个布尔变量isAutoRefresh,通过它来判断是否为下拉刷新操作,从而避免数据重复加载。以下是实现此功能的源码。
摘要由CSDN通过智能技术生成

昨天,测试人员提了一个Bug,说是只要来回的点击同一个Tab按钮,加载的数据就会重复,检查代码检查了好长时间也没有发现有啥问题,于是就打断点调试,发现本来是执行的pullToRefreshListView.setRefreshing(); 自以为是执行的刷新操作(其实也就是刷新操作,只不过上拉是刷新,下拉也是刷新,我们做的时候是把上拉刷新改成加载更多了),其实该控件并不能判断出来目前执行的操作是下拉刷新还是上拉加载更多,这就需要自定义一个布尔变量isAutoRefresh,通过它来识别是不是下拉刷新的动作,下面给出实现的源码:

public class MyTopicFragment extends Fragment implements MyTopicObserver,
		OnItemClickListener, OnRefreshListener<ListView>,
		OnLastItemVisibleListener {

	private int mType = 0;
	private PullToRefreshListView pullToRefreshListView;
	private ListView actualListView;
	private MyTopicListAdapter myTopicListAdapter;
	private Context mContext;
	private MyTopicLogic logic;

	private int currentPageCount = 0; // 记录当前为第几页
	private int totalPageCount; // 记录总页数
	private boolean isRefreshAction;// 标志是否是下拉刷新
	private MyTopicEntity mMyTopicEntity;

	private LinearLayout promptView;// 无任何话题的时候显示的提示语

	private LinearLayout mLoadingHint = null;
	private LinearLayout mAfterLodingHint = null;
	private ImageView mHintImage = null;
	private TextView mHintTxt = null;
	
	private boolean isAutoRefresh = false;

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		Bundle args = this.getArguments();
		mType = args.getInt("type");
		mContext = this.getActivity();
		logic = new MyTopicLogic();
		logic.addObserver(this);
		View rootView = inflater.inflate(
				R.layout.fragment_pulltorefresh_listview, container, false);
		initialize(rootView);
		return rootView;
	}

	private void initialize(View rootView) {
		pullToRefreshListView = (PullToRefreshListView) rootView
				.findViewById(R.id.fragment_pulltorefresh_listview);
		myTopicListAdapter = new MyTopicListAdapter();
		actualListView = pullToRefreshListView.getRefreshableView();
		registerForContextMenu(actualListView);
		actualListView.setAdapter(myTopicListAdapter);

		pullToRefreshListView.setMode(Mode.BOTH);
		pullToRefreshListView.getLoadingLayoutProxy(false, true).setPullLabel(
				getString(R.string.poll_refresh_down_loadmore));
		pullToRefreshListView.getLoadingLayoutProxy(false, true)
				.setRefreshingLabel(
						getString(R.string.poll_refresh_down_refreshing));
		pullToRefreshListView.getLoadingLay
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值