如何在自定义ListActivity布局中更改ImageView资源?

时间:2011-12-07 21:26:16

标签: android layout listactivity

在我的应用程序中,我有一个ListActivity和一个自定义布局。在自定义布局中,我有一个ImageView和一个TextView。

我希望能够根据我的应用中的某些条件代码更改ImageView资源。但是,当我尝试image.setImageResource(resource);时,我得到javaNullPointerException。我已尝试将代码段放在不同的位置,例如在适配器之后。有没有人有任何想法?提前谢谢。

另外,在使用ImageView image = (ImageView) findViewById(R.id.image);

引用图像视图之前,我确实声明了图像视图

编辑:

在我的活动中:

    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, DlistArray));

    // Here I want to change the image
  ImageView celebIcon = (ImageView) findViewById(R.id.icon);
  celebIcon.setImageResource(R.drawable.phil);

  ListView celebList = getListView();
  registerForContextMenu(getListView());
  celebList.setTextFilterEnabled(true);

在我的布局中:

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

<ImageView
    android:id="@+id/icon"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_marginLeft="10dp"
    android:padding="10dp"
    android:src="@drawable/alan" />

<TextView
    android:id="@+id/label"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:layout_gravity="center_vertical"
    android:text="@+id/label"
    android:textColor="#ffffff"
    android:textSize="20dp" />
    </LinearLayout>

2 个答案:

答案 0 :(得分:1)

使用自定义适配器:

setListAdapter(new ArrayAdapter<String>(getApplicationContext(), R.layout.list_item, R.id.label, yourItems){
                @Override
                public View getView(int position, View convertView, ViewGroup parent) {
                    if( convertView == null ){
                        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                        convertView = inflater.inflate(R.layout.list_item, null);
                    }

                    ImageView image = (ImageView) findViewById(R.id.icon);
                    image.setImageResource(R.drawable.phil);
                    return convertView;
                }
            });

(如果你想重复使用它,你也可以创建自己的类扩展arrayadapter)

要设置文本视图,只需在getView()方法中添加代码,就像图像设置代码一样。

答案 1 :(得分:0)

在您的情况下,我认为您需要编写自定义适配器(take a look here)。

代码:

(ImageView) findViewById(R.id.icon);

正在主要布局中寻找ImageView,这就是为什么它找不到它。

相关问题