在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > android viewHolder處理listView滑動

            android viewHolder處理listView滑動

            作者: 時間:2016-10-08 來源:網(wǎng)絡(luò) 收藏

            在沒有用viewHolder的情況下,listView表現(xiàn)效率低下。如果加載的數(shù)量過多則會一點點的消耗內(nèi)存,直到拋出oom。開始異步加載圖片會出現(xiàn)圖片錯位的問題,后來查閱資料將holder里邊的圖片地址和圖片一一對應(yīng)起來,在異步加載的回調(diào)函數(shù)中將其替換回來。

            本文引用地址:http://www.biyoush.com/article/201610/305655.htm

            holder.thumb_image.setTag(hotel.getHotelTitlePic()); //避免圖標(biāo)錯位,在異步加載成功后替換回來

            ImageView imageView = (ImageView) listView.findViewWithTag(imageUrl);

            if(imageView != null){

            imageView.setImageDrawable(imageDrawable);

            imageView.setTag();

            }

            以上關(guān)鍵代碼解決圖片錯位問題。

            下面是getView()方法

            public View getView(int position, View rowView, ViewGroup parent){

            final MHotelInfo hotel = this.getItem(position);

            if (rowView == null) {

            holder = new ViewHolder();

            LayoutInflater inflater = ((Activity) this.getContext())

            .getLayoutInflater();

            rowView = inflater.inflate(R.layout.hotel_item_view, null);

            holder.typeName = (TextView) rowView.findViewById(R.id.hotelType);

            holder.thumb_image=(ImageView)rowView.findViewById(R.id.img);// 縮略圖

            holder.distance = (TextView) rowView.findViewById(R.id.distance);

            rowView.setTag(holder);

            }else{

            holder = (ViewHolder) rowView.getTag();

            }

            // 設(shè)置ListView的相關(guān)值

            holder.thumb_image.setTag(hotel.getHotelTitlePic()); //避免圖標(biāo)錯位,在異步加載成功后替換回來

            holder.typeName.setText(hotel.getTypeName());

            if(null == hotel.getHotelTitlePic() || hotel.getHotelTitlePic().equals()){ //如果沒有圖標(biāo)就顯示默認(rèn)圖標(biāo)

            holder.thumb_image.setImageResource(R.drawable.downloadfalse);

            }else{

            //異步加載圖片

            imageLoader.loadDrawable(hotel.getHotelTitlePic(), new ImageCallback() {

            public void imageLoaded(Drawable imageDrawable, String imageUrl) {

            ImageView imageView = (ImageView) listView.findViewWithTag(imageUrl);

            if(imageView != null){

            imageView.setImageDrawable(imageDrawable);

            imageView.setTag();

            }

            }

            });

            }

            return rowView;

            }

            static class ViewHolder {

            TextView typeName;

            ImageView thumb_image;

            }

            但是ViewHolder為什么是被設(shè)計成static類型的,本人一直沒弄清楚。在網(wǎng)上找了些資料但是一直沒能看到一個能說服我的理由。又說節(jié)省內(nèi)存,保持對象的唯一性,還有說保持圖片不錯亂但是個人感覺都不怎么靠譜。今天我試了下將static去掉照常運行沒感覺和以前有什么區(qū)別。后來我查了下static類的一些特性,首先ViewHolder是一個內(nèi)部類若是static類的話則不需要依賴外部類的對象。也就是說只有static的內(nèi)部類的成員變量才可以被聲明成static類型,若內(nèi)部類不是static類型的則不可以聲明靜態(tài)成員變量。不知道是不是static內(nèi)部類的這個特性吸引了設(shè)計者?如果有誰清楚這個問題還請不吝賜教。



            關(guān)鍵詞:

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉