ListView 分页效果
来源:互联网 发布:铁翼雄风 知乎 编辑:程序博客网 时间:2024/06/03 19:16
效果图
代码
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;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();setdata();Listener();}private void Listener() {// TODO Auto-generated method stublv_show.setOnScrollListener(new OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {// TODO Auto-generated method stubif(isBottom){new LoadDataTask().execute();isBottom=false;}}@Overridepublic 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;@Overrideprotected void onPreExecute() {pd=new ProgressDialog(MainActivity.this);pd.setTitle("正在加载...");pd.setMessage("请稍候...");pd.show();}protected List<String> doInBackground(Void... params) {// TODO Auto-generated method stubList<String>list2=new ArrayList<String>();try {Thread.sleep(3000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.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 stublist = 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 stublv_show = (ListView) findViewById(R.id.lv_show);}@Overridepublic 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了。
0 0
- listview分页效果
- ListView 分页效果
- [Android UI界面] 怎样实现ListView分页效果?
- listview实现分页效果(底部正在加载样式)
- Android中Listview实现分页加载效果OnScrollListener
- Android控件之ListView详解及实现分页效果
- Listview分页
- ListView分页
- listView分页
- ListView分页
- listview分页
- listview分页
- ListView分页
- ListView分页
- ListView分页
- ListView分页
- ListView分页
- listview分页
- 使用HttpURLConnection(实现单线程多线程下载)
- UVa 11214:Guarding the Chessboard(DFS)
- java多态初步
- matlab中linspace函数
- 飘雪作业——index.html
- ListView 分页效果
- 0基础自学《第一行代码》
- 动态决定嵌套循环层数的方法
- 零基础学python-16.1 作用域快速入门
- 做题时和学习时,首等大事是什么
- DisplayMetrics的用法--屏幕分辨率
- 杂谈:小米是否已经变味?
- printStackTrace()输出和System.out输出非调用顺序输出
- gradle--第八章 基本的管理依赖1