我正在開發一個將json對象下載到數據庫的應用程序,這樣做的目的是讓用戶可以在不知道數據源。 我已經設法從json API下載所需的字段到我的數據庫中作爲字符串,我可以使用textfields顯示所有文件,但是我有100個圖像,我想以圖像形式呈現而不是字符串形式。 我試圖實現幾種方法,以便我可以顯示圖像。然後遵循幾個tutorails來查看是否可以找到解決方案來解決我的問題。 1,2等等。如何從數據庫中獲取圖像的字符串引用並將其轉換爲實際圖像
以下是我的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);)它不工作。
任何解決方案或建議,在此先感謝。
你已經證明我們只是約,除了相關的部分:)程序的一切。你在哪裏獲得'imageByteArray'? – 2012-02-08 01:34:15
您是否正在發出Web請求以實際抓取圖像? – 2012-02-08 01:47:56
@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