2011-07-29 39 views
3

我是Android新手。我正在創建一個webviews畫廊,在那裏我必須在BaseAdapter中顯示200個webview內容。我不想一起加載所有200個網頁瀏覽。因此,在圖庫的幻燈片上,我將添加每個網頁瀏覽到BaseAdapter,並將刪除顯示的網頁瀏覽,然後我將刷新BaseAdapter與「notifydatasetchanged()」圖庫閃爍在Gallery BaseAdapter中的notifydatasetchanged

這裏面臨的問題是;當我更新「notifydatasetchanged()」上的BaseAdapter時,畫廊得到刷新,在畫廊刷新時閃爍。我想刪除刷新BaseAdapter時的閃爍。可能嗎 ?

感謝提前:)

+0

我相信這是因爲你在運行時創建了下一個視圖,你可以嘗試創建3。之前,當前和下一個。你也可以嘗試在活動清單中加入:android:hardwareAccelerated =「true」 – Androider

+0

它不工作。即使我通過保留先前的視圖來添加一個接一個,畫廊仍然在更新中閃爍。 – FvZ

+0

您是否也在清單中添加了代碼? – Androider

回答

2

我只是糾正它在我的應用程序:)
我會盡我的傳奇英語來解釋。

BaseAdapter.notifyDataSetChanged()對所有顯示的視圖調用Adapter.getView(...)。 所以你必須要處理它在你的重寫方法(在我的情況我把view.Tag業務對象):

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // View is good to use 
    if (convertView != null && convertView.getTag() != null && convertView.getTag() == getItem(position)){ 
     return convertView; 
    }else { 
     //Do your stuff 
     convertView.setTag(getItem(position)) 
     return convertView; 
    } 


} 

我希望這會幫助別人,即使在3年後:)