1. 程式人生 > >徹底解決listview,gridview的getview多次呼叫問題

徹底解決listview,gridview的getview多次呼叫問題

listview,gridview,有時候getview會呼叫多次,特別是把listview放在viewpager中,很容易卡頓

網上的方法往往只是說,把listview的height固定住或者fill_parent,其實這樣簡單的listview是有效的,但是item如果是複雜的xml,很難實現,或者說無法實現。

究其原因,無非是listview要動態計算有多少個view顯示在裡面,所以需要多次onMeasure,最後才onLayout,而onMeasure可能需要執行多次

這不就行了,我們在adapt裡面的getview中,判斷是否在onmeasure裡,如果在,那麼僅僅mInflater.inflate(R.layout.XXX),然後立刻返回這個convertView

如果不在onmeasure裡,那麼再去真正的onlayout

結合這種方法,成功解決了卡頓問題..

大笑

相關推薦

徹底解決listview,gridview的getview呼叫問題

listview,gridview,有時候getview會呼叫多次,特別是把listview放在viewpager中,很容易卡頓 網上的方法往往只是說,把listview的height固定住或者fill_parent,其實這樣簡單的listview是有效的,但是item如

android之ListView呼叫getView解決辦法

前言 最近遇到一個bug,寫了一個簡單的listview,不過listview的條目內含的控制元件較多(且控制元件的狀態即顯隱狀態也比較複雜),結果就導致了,一個bug,例如我的item只有3個,但是getView居然被呼叫了幾十次。實在是驚人的很。這也間接導

jquery on()事件呼叫解決辦法

今天閒的沒事 寫了個時時監控input框的元件,在用on() 方法進行繫結change事件時發現出現多次呼叫的情況。 現在說說自己的解決方法,和大家分享一下: var validators = function() { $(document).on("cha

標頭檔案被呼叫時的解決辦法

微控制器程式設計中有時會出現標頭檔案多次呼叫,編譯時導致結構體函式被重複定義的錯誤以STM3210X為例當頭檔案stm32f10x.h被多次呼叫時,會出現函式體被多次定義的錯誤,此時在標頭檔案中新增#ifndef __STM32F10X_H#define __STM32F10

解決XRecyclerView動態切換佈局管理器 呼叫setAdapter崩潰

在做到類似於淘寶的商品列表介面時,要動態切換佈局管理器。由於之前使用原生RecyclerView加XRefreshView巢狀在DrawableLayout裡,結果XRefreshView上拉加載出了問題,所以只能換XRefreshView來做,剛開始一切都好,就在提交程式

點選UITableViewCell.selected方法被呼叫解決方案

PS:自打使用了self-manager的設計模式.跳轉控制器變得方便多了. 某天.更新Xcode之後發現一個BUG.就是點選Cell之後方法執行兩遍.WTF? - (void)setSelected:(BOOL)selected animate

在vue中呼叫同一個定義全域性變數的例項

在Vue開發中,有很多場景會用到多次重複的API請求。 例如: 前端精品教程:百度網盤下載 ? 1

解決vue 按鈕點選重複提交問題

做專案時通常會遇到點選2次或多次表單按鈕會重複提交資料,解決這個問題,需要將提交按鈕置灰。可以通過disabled控制按鈕的點選和不可點選,下面舉個例子 <Button type="primary" @click="bookok" :disabled="isDisable">確定&l

用面向物件重寫thread 實現呼叫一個執行緒

思路:   利用thread類中,run方法在子執行緒中呼叫,其他方法在主執行緒呼叫,所以將生產者寫入主執行緒,將消費者寫入run函式中在子執行緒中執行,完成生產者消費者模型 注意:   1.  要在 init 函式中例項化一個Queue佇列作為生產者消費者中介   2.  要在 init 函式中把d

微信小程式中動畫呼叫的問題

function hideMsg(that) { var animation = wx.createAnimation({ duration: 1500, timingFunction: 'linear', }) that.animation = animation

【記坑】Iterator遍歷時,呼叫next(),二遍歷需要從Collection重新獲取迭代器

【記坑】Iterator遍歷時,多次呼叫next(),二次遍歷需要從Collection重新獲取迭代器 2018年02月10日 11:02:46 閱讀數:681 業務需求,從一份excel表中取到X軸(專案)和Y軸(平臺)的資料,和資料庫中的資料進行比較,如果匹配不上,則把所有匹配不上的

任務排程框架quartz使用總結(異常處理,解決恢復後排程處理)

任務排程框架quartz使用總結(異常處理,解決恢復後多次排程處理)      首先先說說什麼是排程框架,大白話所謂的排程框架你可以把它看成一個定時任務管理框架,並且quartz框架是多執行緒的, quartz最主要的三大基本特性: (1)排程器&nbs

呼叫同一非同步方法體會出現使用相同的屬性值問題

《一》執行同一個方法體,裡面有非同步的邏輯程式碼,如果這個非同步請求還沒有執行完畢時,我們又對它進行了第二次呼叫,它會使用最後一次的執行操作。例如:   var test = {   init:function(){ this.temp = "temp" +

驗證:呼叫WSAStartup會發生什麼?

有時候,總想驗證一些奇怪的想法,乾脆就寫下來,以備後查。 想法:多次呼叫WSAStartup會發生什麼? void TestCase_WSAStartupAndCleanup() { WORD versionRequested1_1, versionRequested2

呼叫Promise的then會返回什麼?

//做飯 function cook(){ console.log('開始做飯。'); var p = new Promise(function(resolve, reject){ //做一些非同步操作 setTimeout(function(){

防止使用者連續擊鍵,呼叫ajax時,即防抖的封裝

在文字框中常常有這樣的需求,鍵入值時,實時呼叫相應的介面,但是每次觸發keydown都觸發,會嚴重消耗網頁的效能 基於此,可以進行封裝,設定鍵入值得間隔在一秒之內只調用一次,程式碼如下 呼叫如下 $("input").on("keydown",debounce(fu

fragment複用至EventBus呼叫

專案是mvp模式開發的,中間有一個tablayout,每個標籤都是fragment複用,通過model請求不同資料展示,發現一個問題,多次滑動之後,每個fragment最後都顯示同一個內容,看起來好像fragment複用有問題,每次取得是同一個fragment。

解決echarts中資料非同步載入後觸發事件疊加問題

解決echarts中多次資料非同步載入後觸發事件疊加問題 問題描述 echarts中資料通過ajax等方式多次非同步載入資料後,當點選圖表中的同一位置時,其觸發事件也會隨之觸發多次。在官方的教程中有這樣一局原話“所有資料的更新都通過 setOption實現,你只需要定時獲

quartz 暫停後重新啟動,在暫停時 被暫停後的任務,在啟動後會補償執行即 會連續呼叫job中的execute方法。

public String add() throws IOException, SchedulerException {// 一定要緊跟Validate之後寫驗證結果類String seconds = job.getCronExpression();//String cronExp = "0/" + sec

hidpi-canvas-polyfill.js 呼叫canvas.getContext('2d') 導致畫布放大問題

相信做前端的 對hidpi-canvas-polyfill.js  都不陌生; 手機端的高清屏上 用canvas 畫圖,大部分 都用到了hidpi-canvas-polyfill.js ; 這個包在高清屏上很好用,但在使用時 可能也會遇到一些問題。 我在使用時就遇到一個,和