这是应该在后台运行的代码块,以便将图像URI用于将来用于图库。 asynctask选择数据库中的所有产品,并将图像搜索到具有相同产品描述名称的指向文件夹中,如果找到,则将产品放入asynctask结尾处声明全局的产品列表中具有这些值的var。
public class getIMGS extends AsyncTask<Void, Integer, Void> {
public List<Produto> pc;
@Override
protected Void doInBackground(Void... params) {
try {
TimingLogger tm = new TimingLogger("IBS", "Inicio");
dbHelper DB = new dbHelper(start.this);
Dao<Produto, Integer> daO = DB.getProdutoDao();
//QueryBuilder<Produto, Integer> qB = daO.queryBuilder();
//qB.selectColumns("CD_REF");
List<Produto> lista = daO.queryForAll();
Produto p = null;
File f = null;
int i;
for (i = 0; i<lista.size();i++) {
p = lista.get(i);
String path = Environment.getExternalStorageDirectory()+"/IBS/Imagens/"+p.getCD_REF()+".jpg";
f = new File(path);
Log.w("IBS", String.valueOf(i)+ " registros!");
if (f.exists()) {
pc.add(p); //This line generates the error
//NullPointerException, even all the values of p being filled. So, what the problem should be?
}
}
ImagesGlobal.setImages(pc);
Log.w("IMAGENS", String.valueOf(pc.size())+" de "+String.valueOf(i)+" produtos possuem imagens...");
Log.w("IMAGENS", "Processo de imagens finalizado!");
tm.addSplit("Fim Imagens");
tm.dumpToLog();
} catch (Exception e) {
Log.e("IMAGENS", e.getMessage());
}
return null;
}
}
答案 0 :(得分:0)
看起来这个变量是空的
public List<Produto> pc;
我没有看到你实例化它