0

我将我的数据库连接到 ListView,如下所示:

public void update_list(String NN) {
       c = db.rawQuery(NN, null);
       startManagingCursor(c);
       String[] from = new String[]{"_id","Fname","Lname","Phone","Car","CarNum" };
       int[] to = new int[]{  R.id._id,R.id.Fname,R.id.Lname,R.id.Phone,R.id.Car,R.id.CarNum };
       SimpleCursorAdapter notes = new SimpleCursorAdapter (this, R.layout.my_list, c, from, to);
       setListAdapter(notes);
       setListAdapter(new SimpleCursorAdapter(this, R.layout.my_list, c, from,to) {

       @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row = super.getView(position, convertView, parent);
        }
    });
    }

现在我需要将 ImageView 连接到图片

我有字段 PicNum 保存图片链接

我知道像这样将图片加载到 ImageView:

 MyPic = (ImageView) findViewById(R.id.MyPic);
        try
        {
        File imgFile = new File("/sdcard/MyPic/Unzip/" +MyParam.zPicNum+ ".jpeg");
        if(imgFile.exists()){
            Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
             MyPic.setImageBitmap(myBitmap);
            }
        else
        {
             MyPic.setImageBitmap(null);
        }
      }
      catch (Exception e) {
           MyPic.setImageBitmap(null);
    } 

如何将此 ImageView 结合到我的 ListView ?

4

5 回答 5

3

试试这个将图像插入列表视图:

MySimpleAdapter notes;

    public class MySimpleAdapter extends SimpleCursorAdapter{

            public MySimpleAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
                super(context, layout, c, from, to);
            }

            @Override
            public void setViewImage(ImageView v, String zPicNum) {
                try{
                    String pathName = Environment.getExternalStorageDirectory().getPath() + "MyPic/Unzip/" +zPicNum+ ".jpeg";
                    File path = new File(pathName);
                    if(path.exists()){
                        BitmapFactory.Options options = new BitmapFactory.Options();
                        Bitmap bm = BitmapFactory.decodeFile(pathName, options);
                        v.setImageBitmap(bm);
                    }
                    else{
                        v.setImageResource(R.drawable.defaultpic);
                    }
                }
                catch (Exception e)
                {
                   Toast.makeText(getActivity(), "error in finding images", Toast.LENGTH_LONG).show();
                }
            }
        }
于 2012-11-21T22:39:59.550 回答
2

SimpleCursorAdapter被弃用是有原因的。原因是,它将冻结您的整个应用程序,直到它下载当前视口中可见的所有图像。

于 2012-11-21T22:08:01.307 回答
2

在&数组中添加PicNum字段和R.id.MyPic(它应该是 的一部分R.layout.my_list) :fromto

   String[] from = new String[]{"_id","Fname","Lname","Phone","Car","CarNum","PicNum" };
   int[] to = new int[]{R.id._id,R.id.Fname,R.id.Lname,R.id.Phone,R.id.Car,R.id.CarNum, R.id.MyPic};

然后在返回之前使用getView()方法填充图片:R.id.MyPic

@Override
 public View getView(int position, View convertView, ViewGroup parent) {
  if(convertView.getId()==R.id.MyPic){
    /*Your code to load the Picture to convertView*/
    return convertView;
    }else return super.getView(position, convertView, parent);
   }
 });

另一种选择是使用 aViewBinder并检查View被绑定的是否为R.id.MyPic,然后再次将图片加载到其中。

于 2012-11-21T21:56:45.470 回答
1

SimpleCursor Adapter 很容易实现,这里有一个,它将帮助您学习简单的光标适配器点击这里

于 2012-11-22T00:26:44.617 回答
1

PicNum 中有什么?如果它是图像的 URL,则必须先下载文件并对其进行解码,然后才能显示它,因此不能单独使用 SimpleCursorAdapter。如果需要,您可以继承 SimpleCursorAdapter 并使用 SimpleCursorAdapter.ViewBinder 接口对其进行扩展。这将允许您对大多数列使用默认的 bindView 行为,然后下载并解码 PicNum 的图像。

于 2012-11-21T21:57:54.940 回答