我现在正在制作一个应用程序,解析一个网址并从中获取一些信息。我想使用这些值来创建对象,将它们放入arraylist中,并使用ListView布局在屏幕上显示它们。
当我想在对象上签署drawables值时出现问题。我希望,根据其价值观,将其作为可绘制的或其他的。下面是代码:
Retransmision retransmision = new Retransmision();
retransmision.setIdioma(idioma);
retransmision.setTipo(tipo);
retransmision.setCalidad(calidad);
retransmision.setLink(link);
retransmision.setImagenLogo(tipo);
retransmision.setImagenCalidad(calidad);
retransmisionesDescargadas.add(retransmision);
我只是创建对象并使用其方法分配一些值。并且继承了抛出nullPointerException的方法:
public void setImagenCalidad(int calidad) {
if (calidad == 0) {
imagenCalidad = context.getResources().getDrawable(R.drawable.desconocida);
} else if(calidad <= 250) {
imagenCalidad = context.getResources().getDrawable(R.drawable.baja);
} else if(calidad <= 500) {
imagenCalidad = context.getResources().getDrawable(R.drawable.media);
} else if(calidad <= 750) {
imagenCalidad = context.getResources().getDrawable(R.drawable.alta);
} else if(calidad <= 1000) {
imagenCalidad = context.getResources().getDrawable(R.drawable.muy_alta);
} else {
imagenCalidad = context.getResources().getDrawable(R.drawable.excelente);
}
}
很奇怪,因为我使用方法setImagenLogo的类似代码似乎运行良好。唯一的区别是获得一个String参数。另一个是int。
Ps:如果它有帮助,这是retransmision对象及其变量的构造函数:
Context context;
private String idioma;
private String tipo;
private int calidad;
private String link;
private Drawable imagenLogo;
private Drawable imagenIdioma;
private Drawable imagenCalidad;
public Retransmision() {
idioma = "";
tipo = "";
calidad = 0;
link = "";
imagenLogo = null;
imagenIdioma = null;
imagenCalidad = null;
}
答案 0 :(得分:0)
唯一可以为null的是context
...我发现你没有在构造函数中初始化它。也许这就是你想要的:
public Retransmision(Context ctx) {
idioma = "";
tipo = "";
calidad = 0;
link = "";
imagenLogo = null;
imagenIdioma = null;
imagenCalidad = null;
context = ctx;
}