91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何在android中對listview進行優化

發布時間:2021-01-06 16:44:03 來源:億速云 閱讀:190 作者:Leah 欄目:移動開發

這篇文章給大家介紹如何在android中對listview進行優化,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

1、listview在定義的時候寬和高最好固定一下,這樣可以減少listview測量次數,避免每次加載的時候都要去進行測量。

2、分頁加載,這也是優化之一,優化內存,還有體驗感,有興趣的可以試試大數據加載;

3、convertView 就是布局的復用;

4、ViewHolder的使用 目的減少findviewByID的次數;

下面代碼驗證一下3和4。

如何在android中對listview進行優化

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;
}

也就是說如果這樣寫的話每次都會進行布局的填充(滑動一下你就會發現每次都會打印日志),找到相應的布局,如果每次都去填充的話肯定浪費資源,所以我們這樣去寫

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;
}

如何在android中對listview進行優化

你會看到日志始終是這幾個數據(如果你頁面顯示5個那個這里的數據就應該是六條會比顯示的數據多一條)。

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;你可能會說你可以在if判斷里面findViewById啊,然后在if外邊賦值啊,你可以試試 你會發現很有意思的事情,上下滑動幾次,你會發現數據就會混亂,并且重復數據很多。這樣顯然是不符合我們的要求的;

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;
}

關于如何在android中對listview進行優化就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

康马县| 道孚县| 民乐县| 乡宁县| 临朐县| 辽阳市| 香港| 兰坪| 万山特区| 霸州市| 喀什市| 封丘县| 宣武区| 兴山县| 基隆市| 鹤岗市| 丹棱县| 丽水市| 齐河县| 崇信县| 崇仁县| 噶尔县| 威信县| 都兰县| 全椒县| 临夏市| 金昌市| 壶关县| 酉阳| 肃北| 昌乐县| 宁陵县| 溧阳市| 万安县| 扬中市| 手游| 青铜峡市| 普宁市| 常熟市| 南漳县| 临沧市|