乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Android中ListView動(dòng)態(tài)加載數(shù)據(jù)

       Babylly 2012-01-03

      1. 引言:

       

      為了提高ListView的效率和應(yīng)用程序的性能,在Android應(yīng)用程序中不應(yīng)該一次性加載ListView所要顯示的全部信息,而是采取分批加載策略,隨著用戶(hù)的滑動(dòng),動(dòng)態(tài)的從后臺(tái)加載所需的數(shù)據(jù),并渲染到ListView組件中,這樣可以極大的改善應(yīng)用程序的性能和用戶(hù)體驗(yàn)。

      2. 交互:

       

      進(jìn)入ListView組件,首先預(yù)加載N條記錄,當(dāng)用戶(hù)滑動(dòng)到最后一條記錄顯示加載提示信息,并從后臺(tái)加載N條數(shù)據(jù),接著渲染UI界面。

      3. 效果圖:

      ListView動(dòng)態(tài)加載數(shù)據(jù)

      4. 程序?qū)崿F(xiàn):

      1. package com.focus.loading;  
      2. import android.app.ListActivity;  
      3. import android.os.Bundle;  
      4. import android.os.Handler;  
      5. import android.view.Gravity;  
      6. import android.view.View;  
      7. import android.view.ViewGroup;  
      8. import android.widget.AbsListView;  
      9. import android.widget.BaseAdapter;  
      10. import android.widget.LinearLayout;  
      11. import android.widget.ListView;  
      12. import android.widget.ProgressBar;  
      13. import android.widget.TextView;  
      14. import android.widget.AbsListView.OnScrollListener;  
      15. import android.widget.LinearLayout.LayoutParams;  
      16. public class ListViewLoadingActivity extends ListActivity implements  
      17.         OnScrollListener {  
      18.     @Override  
      19.     public void onCreate(Bundle savedInstanceState) {  
      20.         super.onCreate(savedInstanceState);  
      21.         /** 
      22.          * "加載項(xiàng)"布局,此布局被添加到ListView的Footer中。 
      23.          */  
      24.         mLoadLayout = new LinearLayout(this);  
      25.         mLoadLayout.setMinimumHeight(60);  
      26.         mLoadLayout.setGravity(Gravity.CENTER);  
      27.         mLoadLayout.setOrientation(LinearLayout.HORIZONTAL);  
      28.         /** 
      29.          * 向"加載項(xiàng)"布局中添加一個(gè)圓型進(jìn)度條。 
      30.          */  
      31.         ProgressBar mProgressBar = new ProgressBar(this);  
      32.         mProgressBar.setPadding(00150);  
      33.         mLoadLayout.addView(mProgressBar, mProgressBarLayoutParams);  
      34.         /** 
      35.          * 向"加載項(xiàng)"布局中添加提示信息。 
      36.          */  
      37.         TextView mTipContent = new TextView(this);  
      38.         mTipContent.setText("加載中...");  
      39.         mLoadLayout.addView(mTipContent, mTipContentLayoutParams);  
      40.         /** 
      41.          * 獲取ListView組件,并將"加載項(xiàng)"布局添加到ListView組件的Footer中。 
      42.          */  
      43.         mListView = getListView();  
      44.         mListView.addFooterView(mLoadLayout);  
      45.         /** 
      46.          * 組ListView組件設(shè)置Adapter,并設(shè)置滑動(dòng)監(jiān)聽(tīng)事件。 
      47.          */  
      48.         setListAdapter(mListViewAdapter);  
      49.         mListView.setOnScrollListener(this);  
      50.     }  
      51.     public void onScroll(AbsListView view, int mFirstVisibleItem,  
      52.             int mVisibleItemCount, int mTotalItemCount) {  
      53.         mLastItem = mFirstVisibleItem + mVisibleItemCount - 1;  
      54.         if (mListViewAdapter.count > mCount) {  
      55.             mListView.removeFooterView(mLoadLayout);  
      56.         }  
      57.     }  
      58.     public void onScrollStateChanged(AbsListView view, int mScrollState) {  
      59.           
      60.         /** 
      61.          * 當(dāng)ListView滑動(dòng)到最后一條記錄時(shí)這時(shí),我們會(huì)看到已經(jīng)被添加到ListView的"加載項(xiàng)"布局, 這時(shí)應(yīng)該加載剩余數(shù)據(jù)。 
      62.          */  
      63.         if (mLastItem == mListViewAdapter.count  
      64.                 && mScrollState == OnScrollListener.SCROLL_STATE_IDLE) {  
      65.             if (mListViewAdapter.count <= mCount) {  
      66.                 mHandler.postDelayed(new Runnable() {  
      67.                     @Override  
      68.                     public void run() {  
      69.                         mListViewAdapter.count += 10;  
      70.                         mListViewAdapter.notifyDataSetChanged();  
      71.                         mListView.setSelection(mLastItem);  
      72.                     }  
      73.                 }, 1000);  
      74.             }  
      75.         }  
      76.     }  
      77.     class ListViewAdapter extends BaseAdapter {  
      78.         int count = 10;  
      79.         public int getCount() {  
      80.             return count;  
      81.         }  
      82.         public Object getItem(int position) {  
      83.             return position;  
      84.         }  
      85.         public long getItemId(int position) {  
      86.             return position;  
      87.         }  
      88.         public View getView(int position, View view, ViewGroup parent) {  
      89.             TextView mTextView;  
      90.             if (view == null) {  
      91.                 mTextView = new TextView(ListViewLoadingActivity.this);  
      92.             } else {  
      93.                 mTextView = (TextView) view;  
      94.             }  
      95.             mTextView.setText("Item " + position);  
      96.             mTextView.setTextSize(20f);  
      97.             mTextView.setGravity(Gravity.CENTER);  
      98.             mTextView.setHeight(60);  
      99.             return mTextView;  
      100.         }  
      101.     }  
      102.     private LinearLayout mLoadLayout;  
      103.     private ListView mListView;  
      104.     private ListViewAdapter mListViewAdapter = new ListViewAdapter();  
      105.     private int mLastItem = 0;  
      106.     private int mCount = 41;  
      107.     private final Handler mHandler = new Handler();  
      108.     private final LayoutParams mProgressBarLayoutParams = new LinearLayout.LayoutParams(  
      109.             LinearLayout.LayoutParams.WRAP_CONTENT,  
      110.             LinearLayout.LayoutParams.WRAP_CONTENT);  
      111.     private final LayoutParams mTipContentLayoutParams = new LinearLayout.LayoutParams(  
      112.             LinearLayout.LayoutParams.WRAP_CONTENT,  
      113.             LinearLayout.LayoutParams.WRAP_CONTENT);  
      114. }  

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多