日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android中动态更新ListView

發布時間:2025/6/15 Android 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android中动态更新ListView 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在使用ListView時,會遇到當ListView列表滑動到最底端時,添加新的列表項的問題,本文通過代碼演示如何動態的添加新的列表項到ListView中。 實現步驟:調用ListView的setOnScrollListener()方法設置滑動監聽器,實現OnScrollListener接口的方法,判斷當列表滑動到最低端時,加載新的列表項。
其中OnScrollListener接口需要實現如下兩個方法:
onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
view 報告滑動狀態的視圖
firstVisibleItem 可視的第一個列表項的索引
visibleItemCount 可視的列表項個數
totalItemCount 總共的列表項個數
onScrollStateChanged(AbsListView view, int scrollState)
view 報告滑動狀態的視圖
scrollState 滑動狀態
滑動狀態包括
SCROLL_STATE_IDLE : 0 視圖沒有滑動
SCROLL_STATE_TOUCH_SCROLL : 1 用戶正在觸摸滑動,手指仍在屏幕上
SCROLL_STATE_FLING : 2 用戶之前觸摸滑動,現在正在滑行,直到停止
下面通過代碼給大家演示效果
[java]?view plaincopy
  • <?xml?version="1.0"?encoding="utf-8"?>??
  • <LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"??
  • ????android:orientation="vertical"??
  • ????android:layout_width="fill_parent"??
  • ????android:layout_height="fill_parent"??
  • ????>??
  • ????<ListView??
  • ????????android:id="@id/android:list"??
  • ????????android:layout_width="match_parent"??
  • ????????android:layout_height="match_parent"??
  • ????????android:layout_weight="1"??
  • ????????android:drawSelectorOnTop="false"??
  • ????????/>??
  • </LinearLayout>??
  • [java]?view plaincopy
  • //?footer.xml??
  • [java]?view plaincopy
  • <?xml?version="1.0"?encoding="utf-8"?>??
  • <LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"??
  • ????android:layout_width="fill_parent"??
  • ????android:layout_height="wrap_content"??
  • ????android:gravity="center"??
  • ????android:orientation="horizontal"??
  • ????>??
  • ????<ProgressBar??
  • ????????android:id="@+id/progressbar"??
  • ????????android:layout_width="wrap_content"??
  • ????????android:layout_height="wrap_content"??
  • ????????style="\?android:attr/progressBarStyleSmall"??
  • ????????/>??
  • ????<TextView??
  • ????????android:layout_width="wrap_content"??
  • ????????android:layout_height="wrap_content"??
  • ????????android:textSize="20.0sp"??
  • ????????android:text="正在加載..."??
  • ????????/>??
  • </LinearLayout>??
  • 然后是主代碼:

    [java]?view plaincopy
  • public?class?MainActivity?extends?ListActivity??
  • {??
  • ????private?ListView?mListView;??
  • ????private?CustomAdapter?mAdapter;??
  • ????private?int?mScrollState;??
  • ????private?View?mFooter;??
  • ??
  • ????@Override??
  • ????public?void?onCreate(Bundle?savedInstanceState)??
  • ????{??
  • ????????super.onCreate(savedInstanceState);??
  • ????????setContentView(R.layout.main);??
  • ??
  • ????????//獲取ListView??
  • ????????mListView?=?getListView();??
  • ????????//根據footer.xml描述創建View??
  • ????????mFooter?=?getLayoutInflater().inflate(R.layout.footer,?null);??
  • ????????//?在ListView底部添加正在加載視圖??
  • ????????//注意:addFooterView方法需要在調用setListAdapter方法前調用!??
  • ????????mListView.addFooterView(mFooter);??
  • ????????mAdapter?=?new?CustomAdapter();??
  • ????????setListAdapter(mAdapter);??
  • ????????//給ListView添加滾動監聽器??
  • ????????mListView.setOnScrollListener(new?AbsListView.OnScrollListener()??
  • ????????{??
  • ????????????@Override??
  • ????????????public?void?onScrollStateChanged(AbsListView?view,?int?scrollState)??
  • ????????????{??
  • ????????????????//記錄當前狀態??
  • ????????????????mScrollState?=?scrollState;??
  • ????????????}??
  • ??
  • ????????????@Override??
  • ????????????public?void?onScroll(AbsListView?view,?int?firstVisibleItem,?int?visibleItemCount,?int?totalItemCount)??
  • ????????????{??
  • ????????????????//?可視的最后一個列表項的索引??
  • ????????????????int?lastVisibleItem?=?firstVisibleItem?+?visibleItemCount?-?1;??
  • ????????????????//當列表正處于滑動狀態且滑動到列表底部時,執行??
  • ????????????????if?(mScrollState?!=?AbsListView.OnScrollListener.SCROLL_STATE_IDLE??
  • ????????????????????&&?lastVisibleItem?==?totalItemCount?-?1)??
  • ????????????????{??
  • ????????????????????//?執行線程,模擬睡眠5秒鐘后添加10個列表項??
  • ????????????????????new?Thread()??
  • ????????????????????{??
  • ??
  • ????????????????????????private?Handler?handler?=?new?Handler()??
  • ????????????????????????{??
  • ??
  • ????????????????????????????@Override??
  • ????????????????????????????public?void?handleMessage(Message?msg)??
  • ????????????????????????????{??
  • ????????????????????????????????super.handleMessage(msg);??
  • ????????????????????????????????//增加Item數量??
  • ????????????????????????????????mAdapter.count?+=?10;??
  • ????????????????????????????????//通知數據集變化??
  • ????????????????????????????????mAdapter.notifyDataSetChanged();??
  • ????????????????????????????}??
  • ??
  • ????????????????????????};??
  • ??
  • ????????????????????????@Override??
  • ????????????????????????public?void?run()??
  • ????????????????????????{??
  • ????????????????????????????super.run();??
  • ????????????????????????????try??
  • ????????????????????????????{??
  • ????????????????????????????????sleep(5000);??
  • ????????????????????????????????handler.sendEmptyMessage(0);??
  • ????????????????????????????}?catch?(InterruptedException?e)??
  • ????????????????????????????{??
  • ????????????????????????????????e.printStackTrace();??
  • ????????????????????????????}??
  • ????????????????????????}??
  • ??
  • ????????????????????}.start();??
  • ????????????????}??
  • ????????????}??
  • ????????});??
  • ????}??
  • ??
  • ????private?class?CustomAdapter?extends?BaseAdapter??
  • ????{??
  • ????????//?初始列表項數量??
  • ????????int?count?=?20;???
  • ??
  • ????????@Override??
  • ????????public?int?getCount()??
  • ????????{??
  • ????????????return?count;??
  • ????????}??
  • ??
  • ????????@Override??
  • ????????public?Object?getItem(int?position)??
  • ????????{??
  • ????????????return?position;??
  • ????????}??
  • ??
  • ????????@Override??
  • ????????public?long?getItemId(int?position)??
  • ????????{??
  • ????????????return?position;??
  • ????????}??
  • ??
  • ????????@Override??
  • ????????public?View?getView(int?position,?View?convertView,?ViewGroup?parent)??
  • ????????{??
  • ????????????TextView?result?=?(TextView)?convertView;??
  • ????????????//動態創建TextView添加早ListView中??
  • ????????????if?(result?==?null)??
  • ????????????{??
  • ????????????????result?=?new?TextView(MainActivity.this);??
  • ????????????????result.setTextAppearance(MainActivity.this,?android.R.style.TextAppearance_Large);??
  • ????????????????AbsListView.LayoutParams?layoutParams?=?new?AbsListView.LayoutParams??
  • ????????????????????????????????????????????????????????(AbsListView.LayoutParams.FILL_PARENT,??
  • ????????????????????????????????????????????????????????AbsListView.LayoutParams.WRAP_CONTENT);??
  • ????????????????result.setLayoutParams(layoutParams);??
  • ????????????????result.setGravity(Gravity.CENTER);??
  • ????????????}??
  • ????????????result.setText("第?"?+?(position?+?1)+"行");??
  • ????????????return?result;??
  • ????????}??
  • ????}??
  • }??
  • [java]?view plaincopy
  • 效果預覽??

  • 總結

    以上是生活随笔為你收集整理的Android中动态更新ListView的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。