想实现类似口碑网的效果,我不是WEB版,就一般的应用程序
手在触摸屏上向下移动,当滚动条到达最大值的时候,把后面的数据再刷出来。不知道滚动条最大值怎么判断,还有就是在哪里去判断。有代码最好。例如有100条数据,初期显示20条,当滚动条到最后的时候,刷出后面40条数据。

解决方案 »

  1.   

    如果view.getLastVisiblePosition() == (view.getCount() - 1,就说明List滑到底部了,你在写一个方法添加下20项就可以了
      

  2.   

    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;
                    }
            }