ListView android 失去背景颜色

ListView android looses background color

我有一个适配器,它扩展了 ArrayAdapter> 每次都有多个选择填充片段布局。 问题是有时背景会在之前选择的项目或所有其他项目上完全消失。如果你检查这张图片 http://i.imgur.com/S1KEfM1.png

可以看到ccc选项丢失背景。布局膨胀此相对布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="67dp"
    android:background="@drawable/selectable_background_example"
    android:descendantFocusability="blocksDescendants"
    android:gravity="center_vertical"
    android:paddingLeft="20dp"
    android:paddingRight="10dp" >

有了这个背景xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_mediumAnimTime">
    <item android:drawable="@drawable/list_focused_example" android:state_focused="true" android:state_pressed="false"/>
    <item android:drawable="@drawable/pressed_background_example" android:state_pressed="true"/>
    <item android:drawable="@drawable/pressed_background_example" android:state_selected="true"/>
    <item android:drawable="@drawable/pressed_background_example" android:state_activated="true"/>
    <item android:drawable="@drawable/new_strip"/>
</selector>

Pressed_background_example

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <solid android:color="@color/pressed_example" />

    <stroke
        android:width="3dp"
        android:color="@color/pressed_example" />

    <padding
        android:bottom="1dp"
        android:left="1dp"
        android:right="1dp"
        android:top="1dp" />

</shape>

Pressed_example

<resources>
    <color name="pressed_example">#CCCC0000</color>
</resources>

而 new_strip 基本上只是带边框的背景白色图像,list_focused_example 是按下复选框的图像。

在我的 class

中获取视图
public View getView(int position, View convertView, ViewGroup parent) {
    Holder mhHolder;

    if (convertView == null) {
        mhHolder = new Holder();
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.row_a, parent, false);
        mhHolder.txtValue = (TextView) convertView.findViewById(R.id.txtValue);
        mhHolder.txtCheckbox = (CheckBox) convertView.findViewById(R.id.checkBox1);
        mhHolder.txtText = (TextView) convertView.findViewById(R.id.txtText);
        convertView.setTag(mhHolder);
    } else {
        mhHolder = (Holder) convertView.getTag();
    }
    HashMap<String, String> hm = values.get(position);

    mhHolder.txtValue.setText(hm.get("Value"));
    mhHolder.txtText.setText(hm.get("Text"));
    mhHolder.txtCheckbox.setVisibility(View.VISIBLE);
    //TODO CHANGE WHEN CHECKED IS SEND      
    mhHolder.txtCheckbox.setChecked(Base.checked[position]);
}

有没有人知道为什么背景在以前选择的项目上消失,或者有时在除所选项目之外的所有项目上消失。

我认为这是一种错误(或者我没有真正理解真正的功能)。

无论如何你应该尝试调用

mhHolder.txtValue.setbackground(R.drawable.selectable_background_example);

在您的代码中,以便为每个项目执行。

最终问题出在图像上(new_strip)。我不得不制作一个与图像相同的可绘制对象(只有白色背景和灰色圆角),这样就解决了问题。