ListView分页功能(1)

来源:互联网 发布:java 文件编码 编辑:程序博客网 时间:2024/06/10 11:11

ListView分页功能,使用自定义View继承ListView 

  添加一个footerView用来提示加载数据状态

ListView分页功能,



自定义ListView:

主要是在initView() 中添加FooterView

this.addFooterView(footLayout);

/** * 初始化View * @param context */private void initView(Context context) {LayoutInflater inflater = LayoutInflater.from(context);footLayout = (LinearLayout) inflater.inflate(R.layout.footer, null);this.addFooterView(footLayout);footLayout.setVisibility(View.VISIBLE);}

public class MyListView extends ListView {private LinearLayout footLayout;public MyListView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);initView(context);}public MyListView(Context context, AttributeSet attrs) {this(context, attrs, 0);// TODO Auto-generated constructor stub}public MyListView(Context context) {this(context, null);// TODO Auto-generated constructor stub}/** * 初始化View * @param context */private void initView(Context context) {LayoutInflater inflater = LayoutInflater.from(context);footLayout = (LinearLayout) inflater.inflate(R.layout.footer, null);this.addFooterView(footLayout);footLayout.setVisibility(View.VISIBLE);} }

MainActivity.java

package com.example.listviewpagedemo;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.LayoutInflater;import android.view.View;import android.view.Window;import android.widget.AbsListView;import android.widget.AbsListView.OnScrollListener;import android.widget.ArrayAdapter;import android.widget.LinearLayout;import android.widget.ListView;public class MainActivity extends Activity {/* * 底部刷新加载布局 */LinearLayout footLayout ;ListView lv;ArrayAdapter<String> adapter;List<String>  datas = new ArrayList<String>();;boolean isLoadOver = false;boolean isBottom = false;private int index = 0;/** * 加载完了完数据通知根性 */Handler handler = new  Handler() {public void handleMessage(Message msg) {if(msg.what != 1){return;}try {if(adapter == null){adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,datas);lv.setAdapter(adapter);initEvent();}adapter.notifyDataSetChanged();lv.setSelection(index);} catch (Exception e) {e.printStackTrace();}}; };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);initView();initDatas();}/** * 初始化ListView的事件 */private void initEvent() {lv.setOnScrollListener(new OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {// TODO Auto-generated method stubif(isBottom && scrollState >= SCROLL_STATE_IDLE){isLoadOver = false;//再次加载数据initDatas();}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {if(firstVisibleItem + visibleItemCount == totalItemCount){index = firstVisibleItem + visibleItemCount ;isBottom = true;}else {isBottom = false;}}});}/** * 初始化数据 */private void initDatas() {try {if(!isLoadOver){new Thread(new Runnable(){@Overridepublic void run() {try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}//加载数据for (int i = 0; i < 10; i++) {datas.add("项目展示" + datas.size());}isLoadOver = true;handler.sendEmptyMessage(1);}}).start();} } catch (Exception e) {e.printStackTrace();} }/** * 初始化view */private void initView() {lv = (ListView)findViewById(R.id.listView1);}}








0 0
原创粉丝点击