溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

listView基本實現(xiàn)

發(fā)布時間:2020-06-17 22:15:57 來源:網(wǎng)絡(luò) 閱讀:284 作者:鷺明 欄目:開發(fā)技術(shù)

1.getView()界面每顯示一行都會調(diào)用getview()方法

listView基本實現(xiàn)

2.初始化數(shù)據(jù)

listView基本實現(xiàn)

在getview()

listView基本實現(xiàn)

listView基本實現(xiàn)


lsitveiw復(fù)雜行布局的實現(xiàn)

1.創(chuàng)建行布局文件  Ctrl+N

listView基本實現(xiàn)

2.getview()設(shè)置行布局文件

//1.獲得布局轉(zhuǎn)換器

 LayoutInflater inflater = getLayoutInflater();

//2.將行布局文件轉(zhuǎn)換為View對象

View layout = inflater.inflate(R.layout.list_item, null);

//3.查找行布局中的控件

TextView tvTitle = (TextView) layout.findViewById(R.id.tv_title);

TextView tvSubTitle = (TextView) layout.findViewById(R.id.tv_subtitle);

return layout;


使用自己創(chuàng)建的適配器對象

1.創(chuàng)建一個類繼承BaseAdapter{重寫四個方法}

2.使用

listView基本實現(xiàn)

數(shù)據(jù)封裝

1.創(chuàng)建一個類保存每一行的數(shù)據(jù)  

成員變量類型   個數(shù)  取決于  行的控件所要保存的數(shù)據(jù)

創(chuàng)建帶參的構(gòu)造方法   get()  set()

listView基本實現(xiàn)


2.創(chuàng)建容器保存Data數(shù)據(jù)

    ArrayList<Data> list=new ArrayList<Data>();

3.初始化數(shù)據(jù)

listView基本實現(xiàn)

4.getview()獲得每一行的數(shù)據(jù)  Data

listView基本實現(xiàn)


空指針

錯誤:

(TextView) findViewById(R.id.tv_subtitle);

正確:

(TextView) layout.findViewById(R.id.tv_title);

listView基本實現(xiàn)




優(yōu)化

1.復(fù)用行布局

只需要創(chuàng)建界面可見最多行的布局對象,其他界面不可見的行,復(fù)用界面消失的行布局

listView基本實現(xiàn)

convertView:保存即將消失的行布局對象索引

注意:getview()中的變量不要聲明為成員變量

1.//判斷convertView是否為空

View layout =null;

if (convertView==null) {//convertView為空就創(chuàng)建界面可見最多行的布局對象

 //獲得布局轉(zhuǎn)換器     

LayoutInflater inflater = getLayoutInflater();

//將行布局文件轉(zhuǎn)換為View對象

layout = inflater.inflate(R.layout.list_item, null);

}else {//convertView不為空,說明convertView保存了消失的行布局對象索引

      就復(fù)用消失的行布局對象

       layout=convertView;

   }


優(yōu)化二:減少控件查找次數(shù)

實現(xiàn)步驟:

1.創(chuàng)建ViewHolder類:保存查找到的控件的索引     (筆記)

listView基本實現(xiàn)

2.保存查找到的控件索引 并且  為布局設(shè)置標(biāo)簽(保存viewHolder索引)

listView基本實現(xiàn)

3.復(fù)用的行  只需要從標(biāo)簽里拿到控件的索引   不需要再次findviewbyid()

查找控件

listView基本實現(xiàn)



ListView 數(shù)據(jù)更新

1.對容器進(jìn)行操作

2.適配器通知ListView更新界面 通過調(diào)用mAdapter.notifyDataSetChanged();

listView基本實現(xiàn)


listView基本實現(xiàn)



Listveiw行點擊事件

1.普通點擊事件

listView基本實現(xiàn)


2.長按點擊事件

listView基本實現(xiàn)



行點擊事件失效

1.行布局中放入Button    控件搶占焦點

在搶占焦點的控件中設(shè)置: android:focusable="false"

在最外層布局設(shè)置:

android:descendantFocusability="blocksDescendants" >


1. 為Listview注冊上下文菜單

  registerForContextMenu(mListView);

2.設(shè)置長按點擊事件   保存長按行的行號

listView基本實現(xiàn)

3.重寫onCreateContextMenu();

4.重寫onContextItemSelected();菜單點擊事件



listView基本實現(xiàn)


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI