ListView显示空白空间而不是本地图像

时间:2011-09-19 10:11:21

标签: android listview android-listview android-image android-adapter

我正在尝试加载一个只有本地图像和文本的列表,一切正常,我的意思是我可以看到文字很好但在图像区域我看不到图像。

本地图片路线为“/mnt/sdcard/Imagenes/pic1.jpg/ ",,/mnt/sdcard/Imagenes/pic2.jpg/”等。

我必须在这里做错事,不知道是什么。任何帮助都会很感激,谢谢...

以下是我如何将适配器设置为列表

FotosAdapter FotoAdapter = new FotosAdapter(this, R.layout.galeriafotos, listafotos);
listado.setAdapter(FotoAdapter);

和适配器

public class FotosAdapter extends ArrayAdapter<Foto> {

    private ArrayList<Foto> items;


    public FotosAdapter(Context context, int textViewResourceId, ArrayList<Foto> items) {
        super(context, textViewResourceId, items);
        this.items = items;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ContenedorVista contenedor;

        if (convertView == null) {
            LayoutInflater infla = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infla.inflate(R.layout.galeriafotos, null);

            contenedor = new ContenedorVista();

            contenedor.txtObservacion = (TextView) convertView.findViewById(R.id.observaciones);
            contenedor.imgFotos = (ImageView) convertView.findViewById(R.id.fotosexpediente);

            convertView.setTag(contenedor);

        }else{
            contenedor = (ContenedorVista)convertView.getTag();
        }

        Foto o = items.get(position);

        if (o != null) {

            contenedor.txtObservacion.setText(o.getObservaciones());

            contenedor.imgFotos.setImageURI(o.getUriPath());


        }
        return convertView;
    }

    static class ContenedorVista{

        TextView txtObservacion;
        ImageView imgFotos;


    }

}

以下是我设置数组的方法。

listafotos = new ArrayList();

            ImagesAdapter ia = new ImagesAdapter(Common.dbAdapter.getDatabase());
            Cursor cur =  ia.getFiltered(-1, -1, CodExp, null, null, Common.currentUser.getIdUsuario());
            cur.moveToFirst();
            while(!cur.isAfterLast()){

                try{
                    Foto objExpediente = new Foto();                    
                    objExpediente.setUriPath(Uri.parse(cur.getString(cur.getColumnIndex("Path")) + cur.getString(cur.getColumnIndex("_id")) + ".jpg")); 
                    objExpediente.setObservaciones(cur.getString(cur.getColumnIndex("Observaciones")));

                    listafotos.add(objExpediente);

                }catch(Exception ex){
                    Common.log("e",ex.toString());
                }
                cur.moveToNext();

            }
            cur.close();

非常感谢。

2 个答案:

答案 0 :(得分:0)

对我而言,提供的信息较少。代码中缺少的是items-ArrayList的填充。

当显示文本并且未显示照片时,这意味着输入了最后一个if子句。尝试将Log-Output放入最后一个if子句并输出您使用的URI。

亲切的问候

答案 1 :(得分:0)

文件的URI必须以“file://”开头,因此您的seturi应该是:

objExpediente.setUriPath(Uri.parse("file://" + cur.getString(cur.getColumnIndex("Path")) + cur.getString(cur.getColumnIndex("_id")) + ".jpg"));