ListView 分页效果
2015-09-12 08:59
387 查看
效果图
代码
XML代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <ListView android:id="@+id/lv_show" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>
Java代码
import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.app.ProgressDialog; import android.os.AsyncTask; import android.os.Bundle; import android.view.Menu; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.Adapter; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class MainActivity extends Activity { private ListView lv_show = null; private List<String> list = null; private boolean isBottom=false; ArrayAdapter<String> adapter = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); setdata(); Listener(); } private void Listener() { // TODO Auto-generated method stub lv_show.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub if(isBottom){ new LoadDataTask().execute(); isBottom=false; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if(firstVisibleItem+visibleItemCount==totalItemCount){ isBottom=true; } } }); } class LoadDataTask extends AsyncTask<Void,Void, List<String>>{ private ProgressDialog pd=null; @Override protected void onPreExecute() { pd=new ProgressDialog(MainActivity.this); pd.setTitle("正在加载..."); pd.setMessage("请稍候..."); pd.show(); } protected List<String> doInBackground(Void... params) { // TODO Auto-generated method stub List<String>list2=new ArrayList<String>(); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } for(int i=0;i<20;i++){ list2.add("动态添加"+i); } return list2; } protected void onPostExecute(List<String> result) { MainActivity.this.list.addAll(list.size(),result); adapter.notifyDataSetChanged(); lv_show.setSelection(MainActivity.this.list.size()); pd.dismiss(); super.onPostExecute(result); } } private void setdata() { // TODO Auto-generated method stub list = new ArrayList<String>(); for (int i = 0; i < 50; i++) { list.add("我要高薪就业" + i); } adapter = new ArrayAdapter<String>( MainActivity.this, android.R.layout.simple_dropdown_item_1line, list); lv_show.setAdapter(adapter); } private void initView() { // TODO Auto-generated method stub lv_show = (ListView) findViewById(R.id.lv_show); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
下拉刷新后,有一个bug,不管你向上还是向下都不行。
解决办法是把监听事件改一下
lv_show.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub if(scrollState==OnScrollListener.SCROLL_STATE_IDLE){ ListView lv=(ListView) view; int lastVisiblePosition = lv.getLastVisiblePosition(); if(lastVisiblePosition==list.size()-1){ new LoadDataTask().execute(); } } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } });
这样就ok了。
<
97f5
/div>
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件