-
普通式與逗比式的不同在于convertView的使用上: 普通式對convertView進行了處理,充分利用了ListView的緩存機制,避免了重復創建View對象,因為通過LayoutInflater對象的inflate()方法創建View對象是非常耗時且耗資源的。 通過簡單的判斷: if (convertView == null){ convertView = myInflater.inflate(R.layout.item, null); } ,就可以避免大量創建View對象,從而對 getView()做了較好的優化。 ----------------------------------- 摘自評論區: 如果將findViewById寫在if(convertView==null)中的話,運行后listview的順序是混亂的。查看全部
-
逗比式,浪費資源,請勿模仿!查看全部
-
為何是“逗比式”?因為這里只使用了getView()的position參數,完全沒有利用另外兩個參數。本質上說,是“沒有利用到ListView的緩存機制”。每次使用getView(),都通過 LayoutInflater 創建新的View對象view,并在view中找到相應的控件、去給它設置相應的值,完全沒有利用到 ListView 的緩存機制,這樣是對資源的極大浪費。查看全部
-
創建一個新的類 MyAdapter 繼承 BaseAdapter 作為自定義適配器。 聲明數據源 List<ItemBesn> mylist; 構造有參的構造方法,讓數據源和適配器產生關聯: public MyAdapter(List<ItemBean> mylist) { this.mylist = mylist; } 改寫四個繼承的方法。查看全部
-
AS快捷鍵:Alt+insert 在遵循JavaBean設計原則的前提下創建 ItemBean 類: public class ItemBean { //私有屬性 private int ItemImageid; private String ItemTitle; private String ItemContent; //無參構造方法 public ItemBean() { } //非原則,為了方便后面創建對象,這里又定義了有參的構造方法。 public ItemBean(int itemImageid, String itemTitle, String itemContent) { ItemImageid = itemImageid; ItemTitle = itemTitle; ItemContent = itemContent; } //公有的getter/setter方法 public void setItemImageid(int itemImageid) { ItemImageid = itemImageid; } public void setItemTitle(String itemTitle) { ItemTitle = itemTitle; } public void setItemContent(String itemContent) { ItemContent = itemContent; } public int getItemImageid() { return ItemImageid; } public String getItemTitle() { return ItemTitle; } public String getItemContent() { return ItemContent; } }查看全部
-
圖中直接使用有參的構造方法實現賦值。還有另一種賦值方式,通過 Bean 對象的setter方法: for(int i=0;i<20;i++){ ItemBean ib = new ItemBean(); ib.setItemImageid(R.mipmap.ic_launcher); ib.setItemTitle("我是標題"+i); ib.setItemContent("我是內容"+i); datalist.add(ib); }查看全部
-
BaseAdapter基本結構 public int getCount():適配器中數據集中數據的個數 public Object getItem(int position):獲取數據集中與指定索引對應的數據項 public long getItemId(int position):獲取指定行對應的ID public View getView(int position,View convertView,ViewGroup parent):獲取每一個Item的顯示內容 ------------------------------------------ 如圖,新建 Item.xml,創建一個簡單的 Item 布局。查看全部
-
ListView的顯示與緩存機制 了解緩沖池的存在 如圖,實際有很多數據,但局限于手機屏幕的尺寸,ListView第一次加載的時候只顯示前面幾條數據,當我們向上滑動的時候,Item1 就被回收到緩沖池, 同時Item8從緩沖池中被取出。 從緩沖池中取出對象的方法:View getView(int position, View convertView, ViewGroup parent)。 通過緩存機制,可以極大地節約系統資源。 ------------------------------- 摘自評論區: 老師畫的圖是錯誤的,從此圖中至少應該一次加載8個item(但第八個還沒有顯示),然后開始才是從Recycler中去取出被畫成的item。因為 item1還沒完全滑出屏幕時,此時item8已經顯示在界面上了,所以一次至少的加載8個item查看全部
-
數據適配器——BaseAdapter 數據源的來源是各種各樣的,而ListView所展現的數據格式是有一定要求的,數據適配器將數據源轉換成ListView可以顯示的數據格式,建立了數據源和ListView的適配關系。從而將數據的來源和數據的顯示進行了“解耦”,降低了程序的耦合性,讓程序更加容易擴展。 適配器有很多種,而BaseAdapter是最通用的適配器。查看全部
-
創建內部類ViewHolder用于優化findView查看全部
-
取出三個數據查看全部
-
初始化對象查看全部
-
返回ListView要顯示的數據數量查看全部
-
數據源與數據適配器關聯查看全部
-
Alt+insert調出Constructor查看全部
舉報
0/150
提交
取消