2012-02-08 17 views
0

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);)これを使用しようとすると、作業。

事前に感謝の意を表します。

+0

。あなたはどこで 'imageByteArray'を取得していますか? –

+0

イメージを実際に取得するWebリクエストをしていますか? –

+0

@Christopher Perry、正解です。私はウェブリクエストをしています。必要なフィールドを受け取ることができます。主な問題は、データベースにイメージを表示することです。これらのフィールドは、このようなフィールド "PHOTOTHUMBNAILURL" :http://media.xxx.co.uk/3k/2265/35402969/2265_9897_IMG_00_0000_max_200x138.jpg。 – SomCollection

答えて

0

あなたの写真のURLがあるので、問題は何ですか?最初のリクエストが返されたURLを使用して、写真のWebリクエストを作成します。私はこれを使用すると思い

は、それはかなり素晴らしいです:あなたはちょうど関連部分:)を除くプログラムについてのすべてを私たちに示してきた

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

+0

@ Christopher Perry、あなたの返信にもう一度感謝します。私がこの方法を使用しなければならない時まで、データベースから画像とテキストを表示することを好むでしょう。 私はすでに苦労してjsonオブジェクトを取得してデータベースに保存しました。テキストフィールドを使ってデータベースからこれらのフィールドを表示できますが、イメージはテキストとして表示され、唯一の問題があります。 – SomCollection

+0

私はあなたがこの問題を理解しているとは思わない。 JSONオブジェクトには画像のURLが含まれます。実際に画像を取得するには、それらのURLを使用してWebリクエストを作成する必要があります。テキスト!=ビットマップ。 –

+0

、もしあなたが気にしないなら、問題をさらに説明してください。本当に助けが必要です。 – SomCollection

関連する問題