亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 移動測試教程之ListView分頁

移動測試教程之ListView分頁

來源:千鋒教育
發布人:千鋒老師
時間: 2018-12-25 11:46:00 1545709560

  一、ListView分頁:

  (一)、目的:

  Android 應用開發中,采用ListView組件來展示數據是很常用的功能,當一個應用要展現很多的數據時,一般情況下都不會把所有的數據一次就展示出來,而是通過 分頁的形式來展示數據,這樣會有更好的用戶體驗。因此,很多應用都是采用分批次加載的形式來獲取用戶所需的數據。例如:微博客戶端可能會在用戶滑 動至列表底端時自動加載下一頁數據,也可能在底部放置一個"查看更多"按鈕,用戶點擊后,加載下一頁數據。

  (二)、核心技術點:

  1. 借助 ListView組件的OnScrollListener監聽事件,去判斷何時該加載新數據;

  2. 往服務器get傳遞表示頁碼的參數:page。而該page會每加載一屏數據后自動加一;

  3. 利用addAll()方法不斷往list集合末端添加新數據,使得適配器的數據源每新加載一屏數據就發生變化;

  4. 利用適配器對象的notifyDataSetChanged()方法。該方法的作用是通知適配器自己及與該數據有關的view,數據已經發生變動,要刷新自己、更新數據。

  (三)、OnScrollListener監聽事件 :

  1、該監聽器中有兩個需要實現的方法:

  · onScrollStateChanged(AbsListView view, int scrollState):監聽屏幕的滾動狀態的變動情況

  · onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount):監聽屏幕滾動的item的數量

  2、scrollState 回調順序如下:

  · 第1次:scrollState = SCROLL_STATE_TOUCH_SCROLL(1):表示正在滾動。當屏幕滾動且用戶使用的觸碰或手指還在屏幕上時為1

  · 第2次:scrollState =SCROLL_STATE_FLING(2) :表示手指做了拋的動作(手指離開屏幕前,用力滑了一下,屏幕產生慣性滑動)。

  · 第3次:scrollState =SCROLL_STATE_IDLE(0) :表示屏幕已停止。屏幕停止滾動時為0。

  3、onScroll中參數講解:

  · firstVisibleItem:當前窗口中能看見的第一個列表項ID(從0開始)

  · visibleItemCount:當前窗口中能看見的列表項的個數(小半個也算)

  · totalItemCount:列表項的總數

  4、思路:

  · 當滾到最后一條,加載新數據;

  · 適配器的數據源要進行累加:totalList.addAll(list);

  · 數據發生變化,適配器通知:adapter.notifyDataSetChanged();【牢記】

  · 判斷是否滾到最后一行。

  示例代碼:

  if (firstVisibleItem + visibleItemCount == totalItemCount ) {

  isBottom = true;

  }

  (四)、頁面效果:

4

  【要求:】

  當屏幕滑動到最后一條時,顯示“點擊加載數據”的提示。點擊后可以加載新的數據。當向上滑動或者沒有到最后一條時,不顯示“點擊加載數據”的提示。

  (五)、核心代碼:

  1、布局文件的核心代碼:

  1

  android:layout_width="fill_parent"

  android:layout_height="fill_parent" >

  <ListView

  android:id="@+id/listView_main"

  android:layout_below="@+id/button_main_init"

  android:layout_width="match_parent"

  android:layout_height="match_parent">

  2

  <LinearLayout

  android:id="@+id/layout_main_nextpage"

  android:layout_width="match_parent"

  android:layout_height="wrap_content"

  android:layout_alignParentBottom="true"

  android:background="#000"

  android:visibility="invisible"

  android:gravity="center"

  android:onClick="clickButton"

  android:padding="5dp">

  <ProgressBar

  android:id="@+id/progressBar_main"

  style="?android:attr/progressBarStyleSmall"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content" />

  <TextView

  android:id="@+id/text_main_nextpage"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:layout_marginLeft="10dp"

  android:textSize="18sp"

  android:onClick="clickButton"

  android:textColor="#fff"

  android:text="點擊加載更多數據" />

  3

  2、Activity頁面核心代碼:

  public class MainActivity extends Activity {

  private String TAG = "MainActivity";

  private ListView listView_main;

  private LinearLayout layout_main_nextpage;

  private MySQLiteDatabaseHelper dbHelper = null;

  // 用于分頁顯示數據的屬性

  private int pageSize = 30;// 每頁顯示的條數

  private int curPage = 1;

  private int rowCount = 0;

  private int pageCount = 0;// 總頁數

  private boolean isBottom = false;// 判斷是否滾動到數據最后一條

  private List<Map<String, Object>> totalList = null;// 加載到適配器中的數據源

  private SimpleAdapter adapter = null;

  @Override

  protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);

  listView_main = (ListView) findViewById(R.id.listView_main);

  layout_main_nextpage = (LinearLayout) findViewById(R.id.layout_main_nextpage);

  // 實例化訪問數據庫幫助類

  dbHelper = new MySQLiteDatabaseHelper();

  // 獲取數據表一共有多少條,從而計算共有多少頁

  rowCount = dbHelper.selectCount("select id from android_basic", null);

  // 計算總頁碼數

  pageCount = (int) Math.ceil(rowCount / (float) pageSize);

  // 如果當前頁為第一頁,則數據源集合中就是第一頁的內容

  if (curPage == 1) {

  totalList = getCurpageList(1);

  }

  adapter = new SimpleAdapter(this, totalList,

  R.layout.item_listview_main, new String[] { "_id", "title" },

  new int[] { R.id.text_item_listview_id,

  R.id.text_item_listview_title });

  listView_main.setAdapter(adapter);

  // 給ListView對象設置滾動監聽器,以此來判斷是否已經滾動到最后一條,從而決定是否加載新數據

  listView_main.setOnScrollListener(new OnScrollListener() {

  @Override

  public void onScrollStateChanged(AbsListView view, int scrollState) {

  if (isBottom) {

  // 如果滾到最后一條數據(即:屏幕最底端),則顯示:“加載更多新數據”

  if (curPage < pageCount) {

  layout_main_nextpage.setVisibility(View.VISIBLE);

  }

  } else {

  layout_main_nextpage.setVisibility(View.GONE);

  }

  }

  @Override

  public void onScroll(AbsListView view, int firstVisibleItem,

  int visibleItemCount, int totalItemCount) {

  // Log.i(TAG, "==" + firstVisibleItem + ":::" + visibleItemCount

  // + ":::" + totalItemCount);

  // 判斷是否已經滾動到了最后一條,從而決定是否提示加載新數據

  isBottom = (firstVisibleItem + visibleItemCount == totalItemCount);

  }

  });

  }

  public void clickButton(View view) {

  switch (view.getId()) {

  case R.id.layout_main_nextpage:

  // Log.i(TAG, "==" + curPage + ":::" + pageCount);

  // 如果不是最后一頁,則讓當前頁碼累加,讓數據源累加新數據,并通知適配器信息發生變化

  if (curPage < pageCount) {

  curPage++;

  totalList.addAll(getCurpageList(curPage));

  adapter.notifyDataSetChanged();

  }

  // 只要點擊了提示“加載新數據”的信息,就讓其隱藏

  layout_main_nextpage.setVisibility(View.GONE);

  break;

  default:

  break;

  }

  }

  // 獲取每一頁的數據,返回List集合

  private List<Map<String, Object>> getCurpageList(int currentPage) {

  int offset = (currentPage - 1) * pageSize;

  String sql = "select id _id ,title from android_basic limit ? , ?";

  return dbHelper.selectData(sql, new String[] { offset + "",

  pageSize + "" });

  }

  }

  以上便是千鋒軟件測試培訓老師分享的ListView分頁知識,學習軟件測試,可以參考千鋒提供的軟件測試學習路線,內容包含軟件測試環境配置與管理,數據庫測試技術,軟件測試編程技術,應用程序測試技術,互聯網/移動互聯網測試技術等,根據千鋒提供的軟件測試學習路線圖,可以讓你對學好軟件測試需要掌握的知識有個清晰的了解,并能快速入門軟件測試。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
夜夜高潮次次欢爽AⅤ女| 无码中文AV有码中文AV| 香蕉久久久久久AV成人| 亚洲欧美另类激情综合区蜜芽| 又湿又紧又大又爽又A视频| 暗夜免费观看在线完整版| 国产AⅤ无码旗袍丝袜美腿| 国内精品综合久久久40P| 泷泽萝拉AV种子| 日韩A片无码一区二区五区电影| 先锋影音人妻啪啪VA资源网站| 亚洲一码和欧洲二码的尺码区别 | 日韩精品一区二区亚洲AV观看| 天天澡夜夜澡人人澡| 亚洲欧美乱综合图片区小说区| 97久久超碰福利国产精品…| 国产69精品久久久久777| 精品日产卡一卡二卡927| 欧美在线观看免费做受视频| 无码人妻精品一区二区三区下载 | 午夜.DJ高清免费观看视频| 野花影视大全在线西瓜在线播放| 波多野无码中文字幕AV专区| 韩国亚洲精品a在线无码| 欧美性爱XXXX黑人XYX性爽| 小SAO货水好多真紧H视频| 中文精品一区二区三区四区| 丰满少妇高潮惨叫久久久| 精品国产免费人成网站| 人妻激情乱人伦视频| 亚洲AV综合色区无码专区蜜桃 | 亚洲欧美日韩久久精品| でも私はあなたより賢いです意思| 国产女人喷潮视频免费| 男人J桶进女人P无遮挡| 天堂影院一区二区三区四区 | 校长办公室岔开腿呻吟| 91老熟女老女人国产老太毛多| 国产精品免费看久久久8| 美女裸体无遮挡免费视频| 四虎国产精品永久免费网址| 永久免费AV无码网站韩国毛片| 丰满少妇弄高潮了WWW| 久久亚洲AV成人无码电影| 熟妇人妻午夜寂寞影院| 中国鲜肉GAY高中XX禁18网| 国产精品不卡无码AV在线播放| 免费无码不卡视频在线观看| 无码人妻久久一区二区三区APP| 91人妻人人澡人爽人精品 | 两个女人互添下身爽舒服小说| 婷婷伊人久久大香线蕉AV| 337P粉嫩日本欧洲亚洲大胆艺| 国产一区二区三区精品视频 | 久久丫线这里只精品| 无码人妻丰满熟妇惹区| JAPANESE丰满爆乳日本| 娇妻当着我的面被4P| 被黑人巨茎日出白浆的少妇 | 又粗又大内射免费视频小说| 不卡无码人妻一区三区| 久久精品中文闷骚内射| 无码熟妇人妻AV在线一| 把腿张开老子臊烂你的动漫| 久久人妻少妇嫩草AV无码专区| 无码夫の前で人妻を侵犯| 办公室被公司领导C了很多次| 久久亚洲AV无码AV男人的天堂| 小SAO货边洗澡边CAO你| 成人女人A级毛片免费软件| 乱人伦人成品精国产在线| 亚洲AV无码片在线播放| 国产97色在线 | 日| 欧美日韩无套内射另类| 一本一道久久综合久久| 国语高潮无遮挡无码免费看| 日韩人妻无码精品久久| 99热精国产这里只有精品| 久久久久久精品天堂无码中文字幕 | 欧美午夜精品一区二区蜜桃| 永久免费的AV在线网无码| 国内精品久久人妻无码| 忘忧草视频在线观看| 成年美女黄网站色大片免费看| 免费无人区一码二码乱码| 亚洲色欲综合一区二区三区| 国精产品一品二品国精HTC| 丝袜老师办公室里做好紧好爽| YW尤物AV无码点击进入福利| 妺妺窝人体色WWW在线观看婚闹 | 亚洲人成网站精品片在线观看| 国产精品久久久久久久久电影网| 日韩精品无码中文字幕第一区| AV色蜜桃一区二区三区| 免费看的WWW哔哩哔哩小说| 野花影视免费观看电视剧| 精品国产一区二区三区不卡| 亚洲AV伊人久久青青草原| 国产人与Z0XXⅩⅩ另类| 无码国产精品一区二区免费式芒果| 第一章少妇初尝云雨| 热爆料-热门吃瓜-黑料不打烊| 2021最新久久久视精品爱| 蜜桃传媒在线观看免费版7| 伊人色综合久久天天小片| 久久久久无码国产精品不卡| 亚洲色偷偷偷综合网| 久久99精品九九九久久婷婷| 亚洲精品国产综合久久一线| 果冻传媒AⅤ毛片无码| 亚州少妇无套内射激情视频| 国产毛多水多五月激情四射| 午夜成人理论福利片| 国产毛多水多五月激情四射| 无码一区二区三区中文字幕| 国产乱码一区二区三区爽爽爽| 无码一区二区波多野结衣播放搜索| 国产成在线观看免费视频成本人| 四虎永久在线精品免费网址| 国产成人精品免费午夜APP| 特级做A爰片毛片免费看108| 国产成AV人片在线观看天堂无码| 婷婷五月六月激情综合色中文字幕| 国产成人AV综合亚洲色欲| 无码18在线网站成人网站| 国产精品情侣呻吟对白视频| 性色A码一区二区三区天美传媒 | 亚洲AV中文AⅤ无码AV接吻| 娇妻借好友1—38| 亚洲中文字幕A∨| 麻豆星空传媒果冻传媒大象| 52综合精品国产二区无码| 欧美黑人暴力深喉囗交| 把腿张开老子cao烂你在线视频| 日产乱码一二三区别免费下| 公司办公室的秘书3| 无码一区二区三区中文字幕| 狠狠色综合网久久久久久| 亚洲日本一线产区二线区| 老阿姨哔哩哔哩B站肉片茄子芒果 浪货趴办公桌~H揉秘书电影无码 | 美女自拍高潮流白浆| 9丨精品妻人一区二区三区蜜桃| 去掉小内打扑克的视频| 父债子偿BY画崖海棠| 西方38大但人文艺术| 精品 亚洲 无码 自拍 另类| 在公车被灌满JING液| 欧美婷婷六月丁香综合色| 大香伊蕉人在播放2019| 小嫩妇里面又嫩又紧| 久久精品国产亚洲77777| 中文字幕精品亚洲人成在线| 娇小美女被黑壮汉C到喷水| 亚洲综合网站色欲色欲| 欧美96在线 | 欧| 成人无码视频在线观看| 无码午夜福利视频一区| 久久WWW免费人成一看片| 99精产国品一二三产区区别网站| 日本一品和二品区别| 国产乱人伦偷精品视频AAA| 亚洲熟妇AV综合网五月| 欧美XXXXX牲另类人与| 粉嫩AV一二三区免费| 亚洲AV永久无码精品成人| 免费A级毛片无码免费视频| 波多野结衣乳巨码无在线观看| 午夜成人无码片在线观看影院| 久久精品AⅤ无码中文字字幕重口| 99精品国产高清一区二区麻豆| 少妇亚洲XXXX| 精品无码黑人又粗又大又长| 99久久国产综合精品女同图片| 熟妇的荡欲BD高清| 精品综合久久久久久8888| AV无码人妻无码男人的天堂| 无码H片在线观看网站| 久久久不卡国产精品一区二区| 宝贝你的奶好大我想吃| 亚洲AV成人片无码网站网一区| 没带罩子让他捏了一节课| 丰满的人妻沦为玩物在线| 亚洲区综合区小说区激情区| 人妻无码ΑV中文字幕久久| 国产尤物AV尤物在线观看| 18禁男女无遮挡啪啪网站| 偷看娇妻在别人胯下沦陷小说| 久久婷婷五月综合色国产香蕉 | 体验区试看120秒啪啪免费| 久久国产乱子伦免费精品| 草草CCYY免费看片线路| 亚洲国产精品久久久久婷婷图片 | 日韩精品成人无码专区免费| 护士奶头又白又大又好摸视频| 97精品人妻一区二区三区香蕉| 欧美18VIDEOSEX性极品| 成年奭片免费观看视频天天看| 亚洲Av无码成人黄网站在线| 麻豆精品国产综合久久| 国产精品无码V在线观看|