读书人

Android listview如何实现滚动分页

发布时间: 2012-09-15 19:09:29 作者: rapoo

Android listview怎么实现滚动分页

Android listview如何实现滚动分页

package com.test;

import android.app.ListActivity;
import android.os.Bundle;
import android.os.Handler;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.LinearLayout.LayoutParams;

public class test extends ListActivity implements OnScrollListener {
? ? ? ? Aleph0 adapter = new Aleph0();
? ? ? ? int lastItem = 0;
? ? ? ? int mProgressStatus = 0;
? ? ? ? private Handler mHandler = new Handler();
? ? ? ? ProgressBar progressBar;

? ? ? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? ? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? ? ? ? ? LinearLayout searchLayout = new LinearLayout(this);
? ? ? ? ? ? ? ? searchLayout.setOrientation(LinearLayout.HORIZONTAL);
? ? ? ? ? ? ? ? progressBar = new ProgressBar(this);
? ? ? ? ? ? ? ? progressBar.setPadding(0, 0, 15, 0);
? ? ? ? ? ? ? ? searchLayout.addView(progressBar, new LinearLayout.LayoutParams(
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? LinearLayout.LayoutParams.WRAP_CONTENT,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? LinearLayout.LayoutParams.WRAP_CONTENT));
? ? ? ? ? ? ? ? TextView textView = new TextView(this);
? ? ? ? ? ? ? ? textView.setText("加载中...");
? ? ? ? ? ? ? ? textView.setGravity(Gravity.CENTER_VERTICAL);
? ? ? ? ? ? ? ? searchLayout.addView(textView, new LinearLayout.LayoutParams(
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? LinearLayout.LayoutParams.FILL_PARENT,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? LinearLayout.LayoutParams.FILL_PARENT));
? ? ? ? ? ? ? ? searchLayout.setGravity(Gravity.CENTER);
? ? ? ? ? ? ? ? LinearLayout loadingLayout = new LinearLayout(this);
? ? ? ? ? ? ? ? loadingLayout.addView(searchLayout, new LinearLayout.LayoutParams(
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? LinearLayout.LayoutParams.WRAP_CONTENT,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? LinearLayout.LayoutParams.WRAP_CONTENT));
? ? ? ? ? ? ? ? loadingLayout.setGravity(Gravity.CENTER);
? ? ? ? ? ? ? ? getListView().addFooterView(loadingLayout);
? ? ? ? ? ? ? ? // Start lengthy operation in a background thread
? ? ? ? ? ? ? ? // new Thread(new Runnable() {
? ? ? ? ? ? ? ? // public void run() {
? ? ? ? ? ? ? ? // while (mProgressStatus < 100) {
? ? ? ? ? ? ? ? //
? ? ? ? ? ? ? ? // // Update the progress bar
? ? ? ? ? ? ? ? // mHandler.post(new Runnable() {
? ? ? ? ? ? ? ? // public void run() {
? ? ? ? ? ? ? ? // progressBar.setProgress(mProgressStatus);
? ? ? ? ? ? ? ? // }
? ? ? ? ? ? ? ? // });
? ? ? ? ? ? ? ? // }
? ? ? ? ? ? ? ? // }
? ? ? ? ? ? ? ? // }).start();
? ? ? ? ? ? ? ? registerForContextMenu(getListView());
? ? ? ? ? ? ? ? setListAdapter(adapter);
? ? ? ? ? ? ? ? getListView().setOnScrollListener(this);
? ? ? ? }

? ? ? ? public void onScroll(AbsListView v, int firstVisibleItem,
? ? ? ? ? ? ? ? ? ? ? ? int visibleItemCount, int totalItemCount) {
? ? ? ? ? ? ? ? //lastItem = firstVisibleItem + visibleItemCount - 1;
? ? ? ? ? ? ? ? //System.out.println("lastItem:" + lastItem);
? ? ? ? }

? ? ? ? public void onScrollStateChanged(AbsListView v, int state) {
//? ? ? ? ? ? ? ? if (lastItem == adapter.count
//? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? && state == OnScrollListener.SCROLL_STATE_IDLE) {
//? ? ? ? ? ? ? ? ? ? ? ? adapter.count += 10;
//? ? ? ? ? ? ? ? ? ? ? ? adapter.notifyDataSetChanged();
//? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (state == OnScrollListener.SCROLL_STATE_IDLE) {

? ? ? ? ? ? ? ? ? ? ? ? adapter.count += 10;

? ? ? ? ? ? ? ? ? ? ? ? adapter.notifyDataSetChanged();

? ? ? ? ? ? ? ? }
? ? ? ? }

? ? ? ? class Aleph0 extends BaseAdapter {
? ? ? ? ? ? ? ? int count = 10;

? ? ? ? ? ? ? ? public int getCount() {
? ? ? ? ? ? ? ? ? ? ? ? return count;
? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? public Object getItem(int pos) {
? ? ? ? ? ? ? ? ? ? ? ? return pos;
? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? public long getItemId(int pos) {
? ? ? ? ? ? ? ? ? ? ? ? return pos;
? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? public View getView(int pos, View v, ViewGroup p) {
? ? ? ? ? ? ? ? ? ? ? ? TextView view = new TextView(test.this);
? ? ? ? ? ? ? ? ? ? ? ? view.setText("entry " + pos);
? ? ? ? ? ? ? ? ? ? ? ? view.setHeight(90);
? ? ? ? ? ? ? ? ? ? ? ? return view;
? ? ? ? ? ? ? ? }
? ? ? ? }
}

读书人网 >Android

热点推荐