奇怪的问题。我有一个带有自定义项目的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。