在Gallery BaseAdapter中使用notifydatasetchanged时,画廊会闪烁

3
我是一名Android新手。我正在创建一个网页视图库,需要在BaseAdapter中展示200个网页内容。我不想同时加载所有200个网页视图。因此,在滑动库时,我会将每个网页视图添加到BaseAdapter并删除已显示的网页视图,然后我会使用“notifydatasetchanged ()”刷新BaseAdapter。
这里我遇到的问题是:当我在“notifydatasetchanged()”上更新BaseAdapter时,库会被刷新,刷新时库会闪烁。我想在刷新BaseAdapter时消除闪烁。这是否可行?
提前感谢您的帮助 :)

我认为这是因为你在运行时创建了下一个视图,你可以尝试同时创建3个视图:上一个、当前和下一个。你也可以尝试在活动清单中添加以下内容:android:hardwareAccelerated="true" - Androider
它没有起作用。即使我在保留以前的视图的情况下添加一个又一个,画廊仍然在更新时闪烁。 - FvZ
你在清单文件中也添加了代码吗? - Androider
1个回答

3

我刚刚在我的应用程序中进行了更正 :)
我将尝试用我的传奇英语解释一下。

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年后也能对某些人有所帮助 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接