Android ListView自定义项目输入未重绘

时间:2013-02-17 17:45:43

标签: android listview

奇怪的问题。我有一个带有自定义项目的ListView,其中包含一个搜索栏和一个开关。这些输入工作正常,但它们没有重新绘制。因此可以更改开关并触发onCheckedChangeListener,但用户无法看到它。与搜索栏相同,指针停留在他所在的位置,但进度值正确更改。我错过了什么?代码没什么特别的:

在活动中:

listView = (ListView) findViewById(R.id.listview);

listView.setOnItemClickListener(new OnItemClickListener() {
   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
       /* do something, working if inputs have focusable off */
   }
});

listView.setAdapter(listAdapter);

活动布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/listview_lights"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >
    </ListView>
</RelativeLayout>

列表项的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/listview_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/name_placeholder" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="right" >

            <ImageView
                android:id="@+id/listview_type"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dip"
                android:contentDescription="@string/type_description"
                android:src="@drawable/unknown" />

            <ImageView
                android:id="@+id/listview_reachable"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dip"
                android:contentDescription="@string/reachable_description"
                android:src="@drawable/unreachable" />

            <Switch
                android:id="@+id/listview_switch"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:focusable="false"
                tools:ignore="NewApi" />
        </LinearLayout>
    </LinearLayout>

    <SeekBar
        android:id="@+id/listview_seekbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dip"
        android:layout_marginBottom="5dip"
        android:focusable="false" />
</LinearLayout>

编辑:不知道它是否相关,但是当创建ListView时,适配器没有数据,因此列表最初是空的。加载项目时,将调用notifyDataSetChanged并更新ListView。

0 个答案:

没有答案