android 固定底部 布局_Android系统列表控件
在android系統控件中,有多個控件可以展示列表數據。
一、ListView
該組件是android中最常用的一個UI組件,用于實現在屏幕上顯示多個內容,以便于我們用手指進行滑動。
ListView控件以列表的形式展示具體內容,并且能夠根據數據的長度自適應顯示。如圖所示:
列表的顯示需要三個元素:
- 1.ListVeiw:用來展示列表的View。
- 2.適配器:用來把數據映射到ListView上的中介。Adapter
- 3.數據:具體的將被映射的字符串,圖片,或者基本組件。
根據列表的適配器類型,列表分為三種:ArrayAdapter,SimpleAdapter和SimpleCursorAdapter。
- ArrayAdapter最為簡單,只能展示一行字,基本不用,或極少數時候使用。
- SimpleAdapter有最好的擴充性,可以自定義出各種效果。
- SimpleCursorAdapter可以認為是SimpleAdapter對數據庫的簡單結合,可以方面的把數據庫的內容以列表的形式展示出來。
在開發過程中,往往繼承使用BaseAdapter,自己來實現各種需要實現的效果和數據適配。繼承BaseAdapter類后,需要重寫如下幾個方法:
- getCount: 一共有多少個item展示項
- getItem(int position):獲取每一個展示項
- getItemId(int position):獲取item的id
- getView(int position, View convertView, ViewGroup parent):每一個在屏幕內展示的view視圖
因為涉及到自定義View視圖,因此往往會借助一個自定義的holder類來進行數據的刷新,事件的操作等。
數據更新
當數據源有更新時,需要重新設置適配器中的數據,同時調用適配器中的notifyDataSetChanged方法。
二、GridView
GridView 跟ListView 很類似,ListView 主要以列表形式顯示數據,GridView 則是以網格形式顯示數據。
GridView主要通過使用自定義BaseAdapter來適配數據,進而顯示到GridView中。使用步驟:
- 1、準備數據源:通常是ArrayList形式。
list = new ArrayList>(); - 2、為數據源設置適配器
MyAdapter adapter = new MyAdapter(); - 3、設置適配器
gridView.setAdapter(adapter);
與ListView相似,開發重點在如何自定義實現Adapter,以及如何實現交互。
三、RecyclerView
RecyclerView簡介
RecyclerView是support.v7包中的控件,可以說是ListView和GridView的增強升級版。
官方對RecyclerView的描述如中說到:A flexible view for providing a limited window into a large data set。
RecyclerView從2014年發布到現在已經很長時間了,使用已經相當普遍。
LayoutManager
使用上RecyclerView與Listview使用步驟基本相同,不同的是RecyclerView多了一個LayoutManager,翻譯為布局管理器。
RecyclerView有三個默認布局管理器,他們分別是:
- LinearLayoutManager:線性管理器
- GridLayoutManager:網格管理器
- StaggeredGridLayoutManager:交錯式網格布局
三個布局管理器都支持橫向和縱向排列以及反向滑動。如果想把RecyclerView改為橫向滑動,也可以通過調用:
mLayoutManager.setOrientation(GridLayoutManager.HORIZONTAL);監聽及點擊事件
RecyclerView不像ListView一樣提供item的點擊監聽,開發者需要自己實現,有兩種常用的方式:
- 為item的view設置點擊事件
- 通過recycler.addOnItemTouchListener監聽
動畫
recyclerview支持為item設置豐富的動畫效果,可以通過如下方式設置動畫:
recyclerView.setItemAnimator(new DefaultItemAnimator());四、下拉刷新和上拉加載的原理
無論是ListView、GridView還是RecyclerView,在實際的開發中都會有很多列表場景的使用。更為常見的是各種應用中都會使用到下拉刷新,上拉加載或者底部加載等效果。
實現下拉刷新和上啦下載的原理:主要是通過監控控件的滑動來實現的。可以通過設置滑動監聽:
- 獲取當前顯示的第一個item:如果滿足頭部條件,顯示下拉刷新控件,執行刷新操作。
- 獲取當前屏幕顯示的最后一個item:如果滿足底部判斷條件,則加載新數據。
addHeaderView
可以為列表控件添加一個頭view,用來實現下拉頭部刷新控件的添加效果。
addFooterView
可以為列表控件添加一個底部的view,用來實現底部加載控件的效果。
SwipeRefreshLayout
在Android中提供了SwipeRefreshLayout控件,用于實現滑動刷新,使用控件可以檢測縱向滑動,顯示一個獨特的進度條,并在您的應用中觸發回調方法使用該控件時需要注意:
- SwipeRefreshLayout只能包含一個子控件,可以是ListView或者是GridView。
- SwipeRefreshLayout控件是Android的一個支持庫中的控件,需要引入支持庫然后進行使用。
SwipeRefreshLayout能夠響應刷新手勢,當用戶做出滑動手勢時,系統會顯示進度指示器并調用應用的回調方法,具體實現是:- SwipeRefreshLayout.OnRefreshListener:實現該接口,系統會回調該接口
- onRefresh:OnRefreshListener接口的刷新方法,系統會在刷新時回調該方法。
- setRefreshing:數據刷新操作結束后,調用該方法,并設置為false,調整刷新控件的狀態。
五、列表控件事件
列表控件的交互是開發中非常重要的內容,涉及到很多控件的交互,效果的展示等。幾乎所有的交互都是通過事件來完成的。
- OnItemClickListener:listview控件的條目點擊事件監聽器,該監聽器是一個接口,包含一個onItemClick方法。使用時可以通過列表控件的setOnItemClickListener方法設置回調。
- OnScrollListener:列表控件的滑動事件監聽器,該監聽器同樣是一個接口,包含兩個方法,分別是:onScrollStateChanged和onScroll。列表控件有兩種狀態:停止狀態和滑動狀態,當狀態發生改變進行切換時,會調用該方法;當列表控件滑動時回,會調用onScroll方法。
- OnScrollChangeListener:視圖的滑動狀態改變監聽器,該監聽器依然是一個接口,包含一個方法,onScrollChange。該接口的要求api版版是M,即23。
六、列表控件的常用優化方法
- 利用好 convertView 來重用 View。ListView 的核心原理就是重用 View。ListView 中有一個回收器,Item 滑出界面的時候 View 會回收到這里,需要顯示新的 Item 的時候,就盡量重用回收器里面的 View。
- 利用好 View Type,ListView 中有幾個類型的 Item,需要給每個類型創建不同的 View,這樣有利于 ListView 的回收。
- ItemView 的 Layout 層次結構盡量簡單,不要嵌套太深或者太復雜。
- 每個Item不要太高,特別是不要超過屏幕的高度。
- 利用好滑動監聽器,當列表滑動時停止操作,比如:滑動時停止加載圖片,停下來再加載。
- 使用RecycleView, ListView每次更新數據都要notifyDataSetChanged()不是特別友好,RecycleView 在性能和可定制性上都有很大的改善。
- 善用Tag,Id等屬性和方法,綜合使用節省內存空間。
- 處理好事件沖突,比如header,footer和item的事件有可能沖突的問題。
總結,列表控件的優化是一個綜合和系統的工作,在掌握常用的優化方法外,還需要結合自己的團隊的業務進行優化,列表的優化沒有終點,隨著功能的不斷迭代,系統的不斷升級,優化工作也會持續存在。
總結
以上是生活随笔為你收集整理的android 固定底部 布局_Android系统列表控件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python利用特征进行可视化样本显示_
- 下一篇: jmeter对乱码如何处理_JMeter