Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android虚拟设备-视图有奇怪的背景颜色_Android_Avd - Fatal编程技术网

android虚拟设备-视图有奇怪的背景颜色

android虚拟设备-视图有奇怪的背景颜色,android,avd,Android,Avd,我正在使用当前的Android SDK r15 在我的项目中,我使用基于BaseAdapter的自定义适配器的ListView。在BaseAdapter::getView方法中,有一个视图,它从xml资源中膨胀,并用文本进行定制和填充;此外,背景颜色也会根据多种情况而改变。这非常有效,但是: 在Android 3.0及更高版本的Android虚拟设备(AVD)上,我遇到了一个问题,在某个时候,当Android尝试回收现有视图时,背景颜色不会改变,即使在xml资源中指定了背景颜色 我应该假设这是a

我正在使用当前的Android SDK r15

在我的项目中,我使用基于BaseAdapter的自定义适配器的ListView。在BaseAdapter::getView方法中,有一个视图,它从xml资源中膨胀,并用文本进行定制和填充;此外,背景颜色也会根据多种情况而改变。这非常有效,但是:

在Android 3.0及更高版本的Android虚拟设备(AVD)上,我遇到了一个问题,在某个时候,当Android尝试回收现有视图时,背景颜色不会改变,即使在xml资源中指定了背景颜色

我应该假设这是android emulator的问题,还是在真实设备上也会发生这种情况? 我从来没有在真正的设备上看到过这个问题,使用相同的应用程序

非抽象示例: 我有一个项目,它有一个登录布局(几乎为白色,带有输入字段和按钮),一个“tablet”布局,包含一个联系人列表视图和一个对话列表视图;登录后,我可以选择联系人。在线联系人背景为绿色,离线联系人背景为白色。选择联系人后,联系人的背景变为红色。对话被加载到对话列表视图中。现在我注销了,现在可能是我以前的白色登录是绿色或红色的,就像以前的联系人列表视图一样。此外,甚至我的对话列表视图条目也可能继承联系人列表视图元素的颜色,而忽略xml中指定的背景颜色。这似乎很随意

getView的缩写代码: (刚刚排除了设置“profileImage”的代码)

请尝试以下代码段:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view;
    if(convertView == null) {
      view = inflater.inflate(R.layout.contacts_listelement, parent, false);
    }
    else {
      view = convertView;
    }

即使这不能解决您的问题,这对您的
列表视图
来说也是一个巨大的性能提升。当Android试图重用视图时,
convertView
第一次是
null
,然后它包含了旧创建的视图,这些视图被重新循环并应该被使用。

你能把
getView
函数的代码放进去吗?我已经编辑了这个问题,现在包括了
getView
的代码。谢谢你的改进:)没有。背景颜色已损坏的视图将通过setContentView(R.layout.[…])加载到不同的位置;我已经用以下解决方案解决了这个问题:现在我使用不同的预着色布局,这意味着,我不会手动更改背景颜色。这解决了问题。我现在很困惑。所以损坏的视图不仅在
getView
中,而且在其他地方也存在?您希望
getView
中视图的更改也会反映在该位置?在联系人列表视图中,一切正常。但是在对话列表视图和其他视图中,android:background属性在android回收视图时被view.setBackgroundColor-method覆盖。就这些。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view;
    if(convertView == null) {
      view = inflater.inflate(R.layout.contacts_listelement, parent, false);
    }
    else {
      view = convertView;
    }