2012-02-08 50 views
0

我正在開發一個將json對象下載到數據庫的應用程序,這樣做的目的是讓用戶可以在不知道數據源。 我已經設法從json API下載所需的字段到我的數據庫中作爲字符串,我可以使用textfields顯示所有文件,但是我有100個圖像,我想以圖像形式呈現而不是字符串形式。 我試圖實現幾種方法,以便我可以顯示圖像。然後遵循幾個tutorails來查看是否可以找到解決方案來解決我的問題。 12等等。如何從數據庫中獲取圖像的字符串引用並將其轉換爲實際圖像

以下是我的DBHelper。

@Override 
public void onCreate(SQLiteDatabase db) { 
    String sql = String.format("create table %s (%s int primary key, %s 
      TEXT, %s TEXT, %s TEXT, %S TEXT, %S TEXT, %S TEXT)", 
      TABLE,C_ID 
      ,C_IDENTIFIER,C_PRICE,C_BEDROOMS,C_ADDRESS,C_PROPERTYTYPE,C_PHOTOS); 

    Log.d(TAG, "OnCreate sql :"+sql); 

    db.execSQL(sql); 
    } 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("drop table if exists "+TABLE); 
    Log.d(TAG, "onUpdate dropped table" + TABLE); 
    this.onCreate(db); 
} 

這是從數據庫中獲取字段的類,除了圖像以外,其工作正常。

private SQLiteDatabase database; 
private CursorAdapter dataSource; 
private static final String fields[] = { "identifier", "price", "bedrooms", 
     "ADDRESS", "PROPERTYTYPE", "PHOTOTHUMBNAILURL", BaseColumns._ID }; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.database); 
    DBHelper helper = new DBHelper(this); 
    database = helper.getReadableDatabase(); 
    database = helper.getWritableDatabase(); 
    Cursor data = database.query(DBHelper.TABLE, fields, null, null, null, 
      null, null); 

    dataSource = new SimpleCursorAdapter(
      this, 
      R.layout.list, 
      data, 
      fields, 
      new int[] { R.id.identifier2, R.id.price2, R.id.bedrooms2, 
        R.id.address2, R.id.propertytype2, R.id.propertyPhoto2 }); 

    setListAdapter(dataSource); 


    // selecting single ListView item 
    ListView lv = getListView(); 

    // Launching new screen on Selecting Single ListItem 
    lv.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 


      // getting values from selected ListItem 
      String identifier = ((TextView) view 
        .findViewById(R.id.identifier2)).getText().toString(); 

      String price = ((TextView) view.findViewById(R.id.price2)) 
        .getText().toString(); 
      String bedrooms = ((TextView) view.findViewById(R.id.bedrooms2)) 
        .getText().toString(); 
      String address = ((TextView) view.findViewById(R.id.address2)) 
        .getText().toString(); 
      String propertyType = ((TextView) view 
        .findViewById(R.id.propertytype2)).getText().toString(); 

    String photoThumbnailUrl = ((TextView) 
    view.findViewById(R.id.propertyPhoto2)).getText() 
        .toString(); 





     } 
    }); 
    database.close(); 
    helper.close(); 

} 

當我嘗試這個(字符串photoThumbnailUrl =((TextView的)
view.findViewById(R.id.propertyPhoto2))的getText() 的ToString();)它的工作原理,並顯示圖像作爲字符串然而當我嘗試使用這個 (ImageView image =(ImageView)findViewById(R.id.image1); ByteArrayInputStream imageStream = new ByteArrayInputStream(imageByteArray); Bitmap Image = BitmapFactory.decodeStream(imageStream);)它不工作。

任何解決方案或建議,在此先感謝。

+0

你已經證明我們只是約,除了相關的部分:)程序的一切。你在哪裏獲得'imageByteArray'? – 2012-02-08 01:34:15

+0

您是否正在發出Web請求以實際抓取圖像? – 2012-02-08 01:47:56

+0

@Christopher Perry,是的,這是正確的。我正在做一個web請求,我能夠接收所需的字段。我的主要問題是在數據庫中顯示圖像。這些存儲在像這樣的字段「PHOTOTHUMBNAILURL」 :HTTP://media.xxx.co.uk/3k/2265/35402969/2265_9897_IMG_00_0000_max_200x138.jpg。 – SomCollection 2012-02-08 08:02:58

回答

0

好的,所以你有你的照片的網址...所以有什麼問題?使用第一次請求返回給您的網址爲照片製作網絡請求。

我會利用這一點,這是很真棒:

http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html

+0

@克里斯托弗佩裏,再次感謝您的答覆。最好我會喜歡顯示數據庫中的圖像和文本,但如果直到那時我不能這樣做,我將不得不使用這種方法。 我已經完成了艱苦的工作,並設法檢索json對象並將它們存儲在我的數據庫中。我可以使用文本字段從數據庫顯示這些字段,但圖像顯示爲文本,並且存在唯一的問題。 – SomCollection 2012-02-09 09:53:26

+0

我不認爲你正在理解這個問題。您的JSON對象包含圖片的網址。您需要使用這些網址發出網絡請求才能真正獲取圖片。文本!=位圖。 – 2012-02-10 01:05:42

+0

,如果你不介意,請你進一步解釋問題。我真的需要幫助。 – SomCollection 2012-02-10 01:51:15

相關問題