ListView android失去背景颜色

时间:2015-02-09 16:35:13

标签: android listview android-arrayadapter

我有一个扩展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是按下复选框的图像。

我班上的GetView

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]);
}

有没有人知道为什么背景会消除之前所选项目或有时除了所选项目之外的所有项目。

2 个答案:

答案 0 :(得分:0)

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

无论如何你应该试着打电话

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

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

答案 1 :(得分:0)

最后问题是图像(new_strip)。我必须制作一个与图像相同的绘图(只有白色背景和灰色圆角),以便解决问题。