jsonオブジェクトをデータベースにダウンロードするアプリケーションを開発しています。これは、ユーザーが情報元。 json APIの必須フィールドを文字列としてデータベースにダウンロードできました。テキストフィールドを使用してすべてのフィールドを表示できますが、イメージとして表示するか、文字列として表示したくない100イメージがあります。 私は画像を表示できるようにいくつかのメソッドを実装しようとしました。そして、私の問題の解決策を見つけることができるかどうかを確認するためにいくつかのチュートリアルを続けました。 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イメージ=(ImageView)findViewById(R.id.image1); ByteArrayInputStream imageStream = new ByteArrayInputStream(imageByteArray); Bitmap Image = BitmapFactory.decodeStream(imageStream);)これを使用しようとすると、作業。
事前に感謝の意を表します。
。あなたはどこで 'imageByteArray'を取得していますか? –
イメージを実際に取得するWebリクエストをしていますか? –
@Christopher Perry、正解です。私はウェブリクエストをしています。必要なフィールドを受け取ることができます。主な問題は、データベースにイメージを表示することです。これらのフィールドは、このようなフィールド "PHOTOTHUMBNAILURL" :http://media.xxx.co.uk/3k/2265/35402969/2265_9897_IMG_00_0000_max_200x138.jpg。 – SomCollection