Android Picasso ImageView null - " Target不能为null"

时间:2016-06-24 20:44:26

标签: android image listview picasso

我无法在imageview上显示图像,我检查了日志,imageview为null。 id是正确的。如果我注释掉Picasso指令,列表视图会正确显示。 (我知道如果我使用viewHolder,它可以更高效,但它不是我现在正在寻找的。)

IncidenciaDetallada.java

public class IncidenciaDetallada extends AppCompatActivity {

private String categoria, path_imagen, imagen_URL;
private ArrayList<ItemListViewDetallado> datos = new ArrayList<>();

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_incidencia_detallada);
         getWindow().getDecorView().setBackgroundColor(Color.WHITE);

         ListView listview_incidencia_detallada = (ListView) findViewById(R.id.listview_incidencia_detallada);

         categoria = getIntent().getExtras().getString("categoria");
         path_imagen = getIntent().getExtras().getString("path_imagen");

         imagen_URL = "http://192.168.1.131/" + path_imagen;

         ItemListViewDetallado item = new ItemListViewDetallado(categoria);
         datos.add(item);
         AdaptadorIncidencias adapter = new AdaptadorIncidencias(IncidenciaDetallada.this, datos);
         listview_incidencia_detallada.setAdapter(adapter);
     }


     private class AdaptadorIncidencias extends ArrayAdapter<ItemListViewDetallado> {

         public AdaptadorIncidencias(Context context, ArrayList<ItemListViewDetallado> datos) {
             super(context, R.layout.list_item_incidencia_detallada, datos);

         }

         public View getView(int position, View convertView, ViewGroup parent) {
             LayoutInflater inflater = LayoutInflater.from(getContext());
             View item = inflater.inflate(R.layout.list_item_incidencia_detallada, null);

             TextView tv_categoria = (TextView)item.findViewById(R.id.tv_categoria);
             tv_categoria.setText(categoria);

             ImageView imagen_detalles = (ImageView) findViewById(R.id.imagen_detalles);
                    Picasso.with(getApplicationContext()).load(imagen_URL).into(imagen_detalles);

             return(item);
         }
     }
}

list_item_incidencia_detallada.xml

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

     <TextView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:background="@drawable/style_et_tv"
         android:padding="10dp"
         android:textSize="18sp"
         android:textAppearance="?android:attr/textAppearanceLarge"
         android:id="@+id/tv_categoria"
         android:layout_alignParentTop="true"
         android:layout_alignParentLeft="true"
         android:layout_alignParentStart="true"
         android:layout_marginTop="41dp" />

     <ImageView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:id="@+id/imagen_detalles"
         android:layout_gravity="center_horizontal"
         android:contentDescription="@string/imagen_detalles"
         android:layout_below="@+id/tv_categoria"
         android:layout_alignParentLeft="true"
         android:layout_alignParentStart="true"
         android:layout_marginTop="107dp" />

    </RelativeLayout>

1 个答案:

答案 0 :(得分:0)

忘记在适当的对象上调用findViewById。在您的getView适配器方法中,您应该致电:

ImageView imagen_detalles = (ImageView) item.findViewById(R.id.imagen_detalles);

instaead of:

ImageView imagen_detalles = (ImageView) findViewById(R.id.imagen_detalles);