android 简单的上拉加载实现

android的下拉刷新和上拉加载有很多的第三方,这里实现的是最简单的上来加载,比较简陋

首先定义一个布局文件:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <ListView 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/thrid_list"
        android:cacheColorHint="#00000000">
    </ListView>
</LinearLayout>


接着我们获取ListView

lis=(ListView)view.findViewById(R.id.thrid_list);

再者,我们为lis设置监听器

lis.setOnScrollListener(new AbsListView.OnScrollListener() {
			
			@Override
			public void onScrollStateChanged(AbsListView arg0, int arg1) {
				// TODO Auto-generated method stub
				//System.out.println();
				
				
				//滑动到底部,并且停了下来
				if(is_split&&arg1==OnScrollListener.SCROLL_STATE_IDLE){
					//Toast.makeText(getActivity(), "分页中.....", 1000).show();
					
					//开启异步任务
					MyTask task=new MyTask();
					task.execute(pagenum);
					
				}
			}
			
			@Override
			public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) {
				// TODO Auto-generated method stub
                                   //我们时刻计算着是否滑动到底部
				if((arg2+arg1)==arg3){
					is_split=true;
					return;
				}
				
				is_split=false;
				
			}
		});


下面是我的异步任务,只是模拟从网络上获取数据

private class MyTask extends AsyncTask<Integer,String,String>{
      
		//获取数据
		@Override
		protected String doInBackground(Integer... arg0) {
			// TODO Auto-generated method stub
			int pagenum=arg0[0];
			//这里的netdata相当于一个数据源,根据每次需要显示的页码,获取相应的数据
			List<String> getdata=netdata.subList(pagenum*pagecount,pagenum*pagecount+pagecount);
			//把getdata添加到本地的
			ContentFragmentThird.this.data.addAll(getdata);
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return null;
		}

		@Override
		protected void onCancelled() {
			// TODO Auto-generated method stub
			super.onCancelled();
		}

		@Override
		protected void onPostExecute(String result) {
			// TODO Auto-generated method stub
                        //让进对话框消失
			prodia.dismiss();
			//刷新数据
			adap.notifyDataSetChanged();
			pagenum++;
			super.onPostExecute(result);
		}

		@Override
		protected void onPreExecute() {
			// TODO Auto-generated method stub
			//让进对话框显示
			prodia.show();
			super.onPreExecute();
		}

		@Override
		protected void onProgressUpdate(String... values) {
			// TODO Auto-generated method stub
			super.onProgressUpdate(values);
		}
	}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值