Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 常用到的 listview ,scrollview 等上拉刷新

android 常用到的 listview ,scrollview 等上拉刷新

編輯:關於Android編程

直接上代碼。

其實主要就是通過繼承 OnScrollListener 這個接口 在 onScrollStateChanged 這個方法裡面 判斷listview是否到最後1條。

然後加載數據,下面部分代碼。

public class MainActivity extends Activity implements OnScrollListener {
	private ArrayAdapter   adapter;
	private ListView listView;
    private TextView loadText;
    private ProgressBar pg;
    private List list;
   
    // ListView底部View
    private View moreView;
    private Handler handler = new Handler();
    
    private int MaxNum = 22;// 設置一個最大的數據條數,超過即不再加載
    // 最後可見條目的索引
    private int lastVisibleIndex;
  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.ll);
      
        moreView = getLayoutInflater().inflate(R.layout.moredata, null);
        loadText = (TextView) moreView.findViewById(R.id.bt_load);
        pg = (ProgressBar) moreView.findViewById(R.id.pg);
        listView.addFooterView(moreView);

        
        // 用map來裝載數據,初始化10條數據
        list = new ArrayList();
      
        // 實例化SimpleAdapter
        adapter=  new ArrayAdapter(this, R.layout.item,  R.id.tv_title, list);
        listView.setAdapter(adapter);
        listView.setOnScrollListener(this);
        
        loadDate();

        /**  手動加載    **/     
//        loadText.setOnClickListener(new OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                pg.setVisibility(View.VISIBLE);// 將進度條可見
//                loadText.setVisibility(View.GONE);// 按鈕不可見
//                handler.postDelayed(new Runnable() {
//                    @Override
//                    public void run() {
//                        loadDate();
//                        loadText.setVisibility(View.VISIBLE);
//                        pg.setVisibility(View.GONE);
//                        adapter.notifyDataSetChanged();// 通知listView刷新數據
//                    }
//                }, 2000);
//            }
//        });

    }

    
    /** 說明一下    
     * onScroll              是滑動後觸發的
     * onScrollStateChanged  是拖著滑動觸發
     * */
    @Override
    public void onScroll(AbsListView view, int firstVisibleItem,
            int visibleItemCount, int totalItemCount) {
        // 計算最後可見條目的索引
        lastVisibleIndex = firstVisibleItem + visibleItemCount - 1;

        // 所有的條目已經和最大條數相等,則移除底部的View
        if (totalItemCount == MaxNum + 1) {
        	listView.removeFooterView(moreView);
            Toast.makeText(this, "數據全部加載完成", Toast.LENGTH_LONG).show();
        }
    }

    
    //滑動的時候判斷是否已經到了底部。
    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
    	//OnScrollListener.SCROLL_STATE_TOUCH_SCROLL
    	//OnScrollListener.SCROLL_STATE_FLING
    	//OnScrollListener.SCROLL_STATE_IDLE
    	
    	if (scrollState == OnScrollListener.SCROLL_STATE_IDLE
                && lastVisibleIndex == adapter.getCount()) {
            // 當滑到底部時自動加載
             pg.setVisibility(View.VISIBLE);
             loadText.setVisibility(View.GONE);
             handler.postDelayed(new Runnable() {
	             @Override
	             public void run() {
		                 loadDate();
		                 loadText.setVisibility(View.VISIBLE);
		                 pg.setVisibility(View.GONE);
		                 adapter.notifyDataSetChanged();
		             }
	          }, 2000);
        }
    }

    
    //這裡加載數據 
	private void loadDate(){
		
	        int count = adapter.getCount();

//	        if (count + 5 < MaxNum) {
//	            for (int i = count; i < count + 5; i++) {
//	                list.add("新增第" + i + "行");
//	            }    
//	        } else {
//	            for (int i = count; i < MaxNum; i++) {
//	                list.add("新增第" + i + "行");
//	            }
//	        }

	        //一次加載10條
	        for (int i = count; i < count + 20; i++) {
                list.add("新增第" + i + "行");
            }
	        
	     
	    }
	}

幾個工程:

1. 上面那個簡單的 上拉加載更多的例子

http://download.csdn.net/detail/kongbaidepao/6884945


2. 網上的一個 上拉加載更多 下拉刷新的例子

http://download.csdn.net/detail/kongbaidepao/6884933


3. 還有1個挺完善的 listview scrollview gridview 加載更多的例子

http://download.csdn.net/detail/kongbaidepao/6884999


另外附一個開源項目,有興趣的可以去看看呢。

https://github.com/chrisbanes/Android-PullToRefresh

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved