ImageView在android中返回为null

ImageView在android中返回为null,android,android-asynctask,imageview,switch-statement,Android,Android Asynctask,Imageview,Switch Statement,所以问题是我在listview中有一组数据,输出到页面上。我想能够改变什么评级的基础上检索图像。但由于某种原因,当我尝试将ImageView设置为变量并找到ID时,它返回null。有没有其他方法可以找回这个 if (jo.getString("RatingValue").contains("-1")) { listPlaces.add(jo.getString("BusinessName") + "\n" + jo.getString("Addre

所以问题是我在listview中有一组数据,输出到页面上。我想能够改变什么评级的基础上检索图像。但由于某种原因,当我尝试将ImageView设置为变量并找到ID时,它返回null。有没有其他方法可以找回这个

if (jo.getString("RatingValue").contains("-1")) {
                        listPlaces.add(jo.getString("BusinessName") + "\n" + jo.getString("AddressLine1") + "\n"
                                + jo.getString("AddressLine2") + "\n" + jo.getString("AddressLine3") + "\n"
                                + jo.getString("PostCode") + "\nRating: EXEMPT\nDated: "
                                + jo.getString("RatingDate") + "\n");
                    } else {
                        if (jo.getString("RatingValue").contains("0")) {
                            changeImg(0);
                            System.out.println("Result 0");
                        } else if (jo.getString("RatingValue").contains("1")) {
                            changeImg(1);
                            System.out.println("Result 1");
                        } else if (jo.getString("RatingValue").contains("2")) {
                            changeImg(2);
                            System.out.println("Result 2");
                        } else if (jo.getString("RatingValue").contains("3")) {
                            changeImg(3);
                            System.out.println("Result 3");
                        } else if (jo.getString("RatingValue").contains("4")) {
                            changeImg(4);
                            System.out.println("Result 4");
                        } else if (jo.getString("RatingValue").contains("5")) {
                            changeImg(5);
                            System.out.println("Result 5");
                        }
这是if语句,然后是我更改图像的方法

 private void changeImg(int img) {

    final ImageView imageView = (ImageView)findViewById(R.id.icon);

            System.out.println(imageView + "outside");
            switch (img) {
                case 0:
                    imageView.setImageResource(R.drawable.rating0);
                case 1:
                    imageView.setImageResource(R.drawable.rating1);
                case 2:
                    imageView.setImageResource(R.drawable.rating2);
                case 3:
                    imageView.setImageResource(R.drawable.rating3);
                case 4:
                    imageView.setImageResource(R.drawable.rating4);
                case 5:
                    System.out.println(imageView + "inside");
                    imageView.setImageResource(R.drawable.rating5);

            }
}
如果没有imageView语句,它可以工作,但不会更改图像

此外,我还要补充一点,该方法是在AysncTask类中调用的

提前谢谢

<?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="wrap_content"
android:orientation="horizontal">
<ImageView
    android:id="@+id/icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/rating0"/>
<TextView
    android:id="@+id/data"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
</LinearLayout>

所有与UI相关的工作都必须在UI/主线程上完成,因此,如果您想在另一个线程(例如,
AsyncTask
)上更改
ImageView
的图像。你应该使用

MyActivity.this.runOnUiThread(new Runnable(){
    @Override
    public void run(){
        // change ui here
    }
});

删除ImageView前面的最后一个修饰符。我已经删除了最后一个声明,它仍然返回为Null。您确定资源ID有效吗?ID正确,但我使用的是包含文本和图像的listView,我将使用显示“图标”的XML文件更新我的帖子variable.谢谢你的回复,但我仍然收到了这个nullPointerException错误,我用你的runOnUiThread思想包围了我的代码。@ChrisHoward哪一行引发了这个异常?
case 5:System.out.println(imageView+“inside”);imageView.setImageResource(R.drawable.rating5)//错误行
在正确的文件夹中还保存了一个图像,system.out.println返回为“nulloutside”。您是否检查了此
imageView
是否为
null