将带有图像的数据从服务器保存到SQLite数据库,然后在Android的列表视图中显示

将带有图像的数据从服务器保存到SQLite数据库,然后在Android的列表视图中显示,android,sqlite,http,url,xml-parsing,Android,Sqlite,Http,Url,Xml Parsing,我读了很多博客和教程,但没有得到正确的答案。我的要求是我有一个url,通过它我可以以xml的形式获取数据。在异步任务中,我成功地解析了数据。然后我必须将数据保存到SQLite数据库,然后再次从数据库中提取数据并在屏幕上显示。但是显示空白图像,所以我遇到了问题。进行XML解析- XMLParser parser = new XMLParser(); String xml = parser.getXmlFromUrl(url); //getting XML from URL Doc

我读了很多博客和教程,但没有得到正确的答案。我的要求是我有一个url,通过它我可以以xml的形式获取数据。在异步任务中,我成功地解析了数据。然后我必须将数据保存到SQLite数据库,然后再次从数据库中提取数据并在屏幕上显示。但是显示空白图像,所以我遇到了问题。进行XML解析-

XMLParser parser = new XMLParser();
    String xml = parser.getXmlFromUrl(url); 
//getting XML from URL
    Document doc = parser.getDomElement(xml); 
//getting DOM element
    NodeList nl = doc.getElementsByTagName(PRODUCT);
    for (int i = 0; i < nl.getLength(); i++) {
      Element e = (Element) nl.item(i);
      String name=parser.getValue(e, PRODUCT_NAME);
      String image_url=parser.getValue(e, PRODUCT_IMAGE);
//Changing image to byte[] type because here I am getting image url
       byte[] logoImage = getLogoImage(image_url);
//Inserting data in database
      mySQLiteAdapter.insert_img_Info(name, logoImage);

     }
// Changing image to byte[] using url
    public byte[] getLogoImage(String url) {
     try {
 URL imageUrl = new URL(url);
 URLConnection ucon = imageUrl.openConnection();
 InputStream is = ucon.getInputStream();
     BufferedInputStream bis = new BufferedInputStream(is);
 ByteArrayBuffer baf = new ByteArrayBuffer(500);
 int current = 0;
     while ((current = bis.read()) != -1) {
   baf.append((byte) current);
 }
 photo = baf.toByteArray();
     } catch (Exception e) {
         Log.d("ImageManager", "Error: " + e.toString());
 }
 return photo;
 }
/* Here data is also inserting successfully in SQLite db.But when I am fetching image from database and setting image on ImageView It's not showing any thing*/
    mySQLiteAdapter = new DataBaseHelper(this);
//fetching data to cursor
    Cursor c1 = mySQLiteAdapter.read_img_info();
    if (c1 != null) {
      if (c1.moveToNext()) {
        do {
       name=c1.getString(c1.getColumnIndex("NAME"));
           Getting Image from cursor
       img=c1.getBlob(c1.getColumnIndex("MYIMG"));
            Log.i(TAG, "Image.length="+img.length);
//Here I am getting image length for all images successfully
    } while (c1.moveToNext());
}
//Here in bt it's coming null 
//converting data to Bitmap   
    Bitmap bt = BitmapFactory.decodeByteArray(img, 0, img.length);
    ImageView img1 = (ImageView) findViewById(R.id.imgPhoto);
    img1.setImageBitmap(bt);
    }

//My DatabaseHelper class having code
     public static final String TB_MYIMAGE = "MyImage";
     for c creating table
      private static final String CREATE_DEMO = "CREATE TABLE IF NOT EXISTS  "
    + TB_MYIMAGE + "(NAME VARCHAR(20),MYIMG BLOB NOT NULL);";

// insert record into table
     public void insert_img_Info(String name,byte[] logoImage) {
     myDataBase.execSQL("INSERT INTO "+"'"+TB_MYIMAGE+"'"+ " (NAME,MYIMG) Values
                                         ('" + name + "','"+logoImage+"');");
// get data from table
     public Cursor read_img_info() {
     Cursor c = myDataBase.rawQuery("SELECT NAME,MYIMG FROM MyImage",null);
     if (c != null) {
     return c;
     } else {
  return null;
  }
     }

所以,请任何人都能帮助我。我这样做是为了基于离线场景的应用程序。

您是否从xml获取字节数组。您是否从数据库获取数据?是否遵循此问题答案