1

所以我有这个列表视图和我为它制作的自定义 XML 文件。

在该文件中,有一个没有源集且具有固定 id 的图像。

我想将此图像源更改为可绘制文件夹中的资源之一。

这是我的 XML:

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

<LinearLayout 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<ImageView 
 android:id="@+id/listImage"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:contentDescription="protection image"
 android:layout_marginTop="10dp"
/>
<LinearLayout 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginLeft="10dp"
>
<TextView android:id="@+id/text1" 
android:textSize="20dp"  
android:textStyle="bold"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<TextView android:id="@+id/text2"
android:textSize="12dp" 
android:layout_marginTop="5dp"
android:layout_width="wrap_content" 
android:layout_height="fill_parent"/>
</LinearLayout>
</LinearLayout>

</LinearLayout>

这是我到目前为止所尝试的,它崩溃了:

        adapter=new SimpleAdapter(this, listItems, R.layout.custom_row_view,new String[]{"name", "current"},  new int[] {R.id.text1, R.id.text2});
    ImageView img;
    img = (ImageView) findViewById(R.id.listImage);
    Drawable d = getResources().getDrawable(R.drawable.opened);
    img.setImageDrawable(d);
    setListAdapter(adapter);
4

1 回答 1

1
ImageView img;
    img = (ImageView) findViewById(R.id.listImage);

这意味着您指的是布局中存在的对象,您可以将其用于 Activity 的setContentView()。但是您的 ImageView 不存在于该布局中。

在这里,您尝试使用 ListView 来引用它。所以很明显你得到了空指针异常。

您还必须使用自定义适配器。尝试以下链接中的一个。

http://www.ezzylearning.com/tutorial.aspx?tid=1763429&q=customizing-android-listview-items-with-custom-arrayadapter

http://www.mkyong.com/android/android-listview-example/

于 2012-05-10T13:50:10.300 回答