最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android 之listview 優(yōu)化方法

 更新時(shí)間:2018年06月14日 09:07:46   作者:石頭_起航  
這篇文章主要介紹了android 之listview 優(yōu)化方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

這個(gè)東西做android是必備的,我相信你一定也會(huì),但是我寫(xiě)下來(lái)的目的就是記錄一下。

這個(gè)東西面試也很多會(huì)問(wèn)到的,那么我們?cè)趺椿卮鹉牵?/p>

首先我認(rèn)為有這么幾點(diǎn):

1、listview在定義的時(shí)候?qū)捄透咦詈霉潭ㄒ幌?,這樣可以減少listview測(cè)量次數(shù),避免每次加載的時(shí)候都要去進(jìn)行測(cè)量。

2、分頁(yè)加載,這也是優(yōu)化之一,優(yōu)化內(nèi)存,還有體驗(yàn)感,有興趣的可以試試大數(shù)據(jù)加載;

3、convertView 就是布局的復(fù)用;

4、ViewHolder的使用 目的減少findviewByID的次數(shù);

下面代碼驗(yàn)證一下3和4。

public View getView(int position, View convertView, ViewGroup parent) {
  Log.e("========>>>>>", "getView-----position" + position);
  convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list, null);
  return convertView;
}

也就是說(shuō)如果這樣寫(xiě)的話每次都會(huì)進(jìn)行布局的填充(滑動(dòng)一下你就會(huì)發(fā)現(xiàn)每次都會(huì)打印日志),找到相應(yīng)的布局,如果每次都去填充的話肯定浪費(fèi)資源,所以我們這樣去寫(xiě)

public View getView(int position, View convertView, ViewGroup parent) {
  if (convertView == null) {
    convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list, null);
    Log.e("========>>>>>", "getView-----position" + position);
  } else {
  }
  return convertView;
}

你會(huì)看到日志始終是這幾個(gè)數(shù)據(jù)(如果你頁(yè)面顯示5個(gè)那個(gè)這里的數(shù)據(jù)就應(yīng)該是六條會(huì)比顯示的數(shù)據(jù)多一條)。

ViewHolder

如果不使用viewHolder的話代碼就是這樣的

public View getView(int position, View convertView, ViewGroup parent) {
  if (convertView == null) {
    convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list, null);
  }
  TextView textView = convertView.findViewById(R.id.tv);
   textView.setText(mArrayList.get(position));
  return convertView;
}

很明顯這段代碼每次textview 都得findViewById;你可能會(huì)說(shuō)你可以在if判斷里面findViewById啊,然后在if外邊賦值啊,你可以試試 你會(huì)發(fā)現(xiàn)很有意思的事情,上下滑動(dòng)幾次,你會(huì)發(fā)現(xiàn)數(shù)據(jù)就會(huì)混亂,并且重復(fù)數(shù)據(jù)很多。這樣顯然是不符合我們的要求的;

public View getView(int position, View convertView, ViewGroup parent) {
  ViewHolder viewHolder;
  if (convertView == null) {
    convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list, null);
    viewHolder = new ViewHolder();
    viewHolder.mTextView = convertView.findViewById(R.id.tv);
    convertView.setTag(viewHolder);
  } else {
    viewHolder = (ViewHolder) convertView.getTag();
  }
  viewHolder.mTextView.setText(mArrayList.get(position));
  return convertView;
}

public static class ViewHolder {
  private TextView mTextView;
}

這樣的基本復(fù)合我們的要求了,數(shù)據(jù)不會(huì)混亂并且復(fù)用了布局還減少了findViewById的次數(shù),這樣大大減少了內(nèi)存的使用。其實(shí)這樣做有個(gè)問(wèn)題listview item中如果有圖片快速滑動(dòng)你會(huì)發(fā)現(xiàn)錯(cuò)位的問(wèn)題,當(dāng)然這些問(wèn)題第三方的加載框架一般都可以解決。listview item盡量減少布局的嵌套 還有大圖片的加載 容易o(hù)om。listview 優(yōu)化差不多就這些,如果還有其他的更好的優(yōu)化方法,歡迎留言。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android 微信圖片分享功能

    Android 微信圖片分享功能

    本文主要介紹的是,Anroid 分享本地帶二維碼的圖片給微信好友和朋友圈的功能代碼,具有一定的參考價(jià)值,希望能幫助到有需要的朋友
    2016-07-07
  • Flutter?WebView?預(yù)加載實(shí)現(xiàn)方法(Http?Server)

    Flutter?WebView?預(yù)加載實(shí)現(xiàn)方法(Http?Server)

    這篇文章主要介紹了Flutter?WebView?預(yù)加載實(shí)現(xiàn)方法,包括資源的配置,資源的下載和存儲(chǔ),版本的管理,如何根據(jù)實(shí)際url獲取對(duì)應(yīng)HttpServer?bind的url等,需要的朋友可以參考下
    2022-05-05
  • Android使用Retrofit仿微信多張圖片拍照上傳

    Android使用Retrofit仿微信多張圖片拍照上傳

    這篇文章主要介紹了Android使用Retrofit仿微信多張圖片拍照上傳的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Input系統(tǒng)之InputReader處理按鍵事件詳解

    Input系統(tǒng)之InputReader處理按鍵事件詳解

    這篇文章主要為大家介紹了Input系統(tǒng)之InputReader處理按鍵事件詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Android中選項(xiàng)菜單(OptionMenu)的創(chuàng)建方法

    Android中選項(xiàng)菜單(OptionMenu)的創(chuàng)建方法

    這篇文章主要介紹了Android中選項(xiàng)菜單(OptionMenu)的創(chuàng)建方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-01-01
  • Android ListView滾動(dòng)到指定的位置

    Android ListView滾動(dòng)到指定的位置

    這篇文章主要給大家介紹了Android中的ListView如何滾動(dòng)到指定的位置,文章給出了兩種解決的方法,并給出詳細(xì)的示例代碼,相信會(huì)對(duì)大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們下面來(lái)一起看看吧。
    2016-10-10
  • 詳解Android ConstraintLayout 約束布局的用法

    詳解Android ConstraintLayout 約束布局的用法

    本篇文章主要介紹了詳解Android ConstraintLayout 約束布局的用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • Android Dialog對(duì)話框詳解

    Android Dialog對(duì)話框詳解

    這篇文章主要介紹了Android Dialog對(duì)話框詳解的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • 淺談Android實(shí)踐之ScrollView中滑動(dòng)沖突處理解決方案

    淺談Android實(shí)踐之ScrollView中滑動(dòng)沖突處理解決方案

    涉及到了ViewPager,MapView,ListView,就需要ScrollView來(lái)做一下支援,這篇文章主要介紹了淺談Android實(shí)踐之ScrollView中滑動(dòng)沖突處理解決方案,有需要的可以來(lái)了解一下。
    2016-12-12
  • 深入解析Android中的RecyclerView組件

    深入解析Android中的RecyclerView組件

    RecyclerView是Android 5.0以來(lái)新加入的組件,被廣泛認(rèn)為是ListView的替代品,這里我們就結(jié)合理論與實(shí)踐來(lái)深入解析Android中的RecyclerView組件:
    2016-06-06

最新評(píng)論

嫩江县| 永泰县| 监利县| 东港市| 尉犁县| 东至县| 开江县| 普兰县| 含山县| 洪江市| 珠海市| 南漳县| 渑池县| 潜江市| 蓝山县| 昌邑市| 洛浦县| 隆安县| 蒲江县| 鹤山市| 沂水县| 吉安市| 张家口市| 淮南市| 井冈山市| 高邑县| 德阳市| 夹江县| 东乌珠穆沁旗| 玉龙| 台北县| 广西| 镇远县| 阳江市| 昌黎县| 聂拉木县| 金乡县| 永吉县| 沐川县| 甘泉县| 闵行区|