2011-07-12 15 views
0

これで、リストビューを作成するためにデバイス上の画像をどのように使用するかの簡単な例を探していたので、ここ2日間過ごしました。これを行う方法。私が知っているのは、たいていの場合、いくつかのelsesサンプルのビットと部分をまとめて、通常は多くの余分なコードが必要になるということです。デバイスからリストビューに画像を読み込む方法を教えてください。本やチュートリアル、ポストはありません。ただこれを行う方法と面白くてクレイジーなことを同時に示すだけです。デバイス上の画像をリストビューに埋め込む

+0

これまでのところ私がオンラインで見つけられる部分は、コードのイメージコレクション部分ですが、実装する方法はわかりません。http://www.samcoles.co.uk/mobile/android- sd-card /#section-comments –

+0

の非同期ロードイメージから、デバイスに保存されているlistviewにイメージを表示したかっただけです。それで確認してください。 –

+0

あなたはこれを参照することができます[はい答え](http://stackoverflow.com/questions/6536091/calling-image-from-server-in-android/6536408#6536408) –

答えて

1

ここで、ここから上記にリンクされているSDImageLoaderを使用して、残りのコードです:http://www.samcoles.co.uk/mobile/android-asynchronously-load-image-from-sd-card

ListAdapterクラス:実際のListActivityで

public class PBListAdapter extends SimpleCursorAdapter { 

//MEMBERS: 

private int mLayoutId; 
private SpecimenHunterDatabaseAdapter mDbHelper; 
private final SDImageLoader mImageLoader = new SDImageLoader(); 


//METHODS: 

public PBListAdapter(Context context, int layout, Cursor c) { 
    super(context, layout, c, new String[] {}, new int[] {}); 
    mLayoutId = layout; 
    mDbHelper = new SpecimenHunterDatabaseAdapter(context); 
    mDbHelper.open(); 
} 

@Override 
public View newView(Context context, Cursor c, ViewGroup parent) { 
    final LayoutInflater inflater = LayoutInflater.from(context); 
    View v = inflater.inflate(mLayoutId, parent, false); 
    return v;    
} 

@Override 
public void bindView(View v, Context context, Cursor c) { 

    String title = c.getString(c.getColumnIndexOrThrow(SpecimenHunterDatabaseAdapter.KEY_CAPTURES_TITLE)); 
    String species = mDbHelper.fetchSpeciesName(c.getInt(c.getColumnIndexOrThrow(SpecimenHunterDatabaseAdapter.KEY_CAPTURES_SPECIES))); 
    int pounds = c.getInt((c.getColumnIndexOrThrow(SpecimenHunterDatabaseAdapter.KEY_CAPTURES_POUNDS))); 
    int ounces = c.getInt((c.getColumnIndexOrThrow(SpecimenHunterDatabaseAdapter.KEY_CAPTURES_OUNCES))); 
    int drams = c.getInt((c.getColumnIndexOrThrow(SpecimenHunterDatabaseAdapter.KEY_CAPTURES_DRAMS))); 
    String weight = pounds + context.getString(R.string.addcapture_pounds) + " " + 
        ounces + context.getString(R.string.addcapture_ounces) + " " + 
        drams + context.getString(R.string.addcapture_drams); 
    String photoFilePath = c.getString(c.getColumnIndexOrThrow(SpecimenHunterDatabaseAdapter.KEY_CAPTURES_PHOTO)); 
    String comment = c.getString(c.getColumnIndexOrThrow(SpecimenHunterDatabaseAdapter.KEY_CAPTURES_COMMENT)); 

    TextView nameView = (TextView)v.findViewById(R.id.pb_row_species_name); 
    TextView weightView = (TextView)v.findViewById(R.id.pb_row_capture_weight); 
    TextView titleView = (TextView)v.findViewById(R.id.pb_row_capture_title); 
    TextView commentView = (TextView)v.findViewById(R.id.pb_row_capture_comment); 
    ImageView photoView = (ImageView)v.findViewById(R.id.pb_row_capture_photo); 

    mImageLoader.load(context, photoFilePath, photoView);  
    nameView.setText(species); 
    titleView.setText(title); 
    weightView.setText(weight); 
    commentView.setText(comment); 
} 
} 

、あなたのonCreate(中)は、リストアダプタを設定します:

私の例では、画像の絶対パスはアプリケーション経由でデータベースに保存されます。

+0

ガーコンあなたは男:)私はこれを試してみると、それが動作するかどうかを参照してください –

+0

ヘイGarcon ... ..私はあなたのサンプルを使用して、私のSDカードから画像を取得しようとしましたが、ImはあなたのSpecimenHunterDatabaseAdapter mDbHelperの代わりに正確に何を使用するかを理解するのに問題がありました。私はリストビューでSDカードから画像を使用するためにデータベースが必要だと思っていません.....私は? –

+0

その部分を取り除くことができます。私はfetchSpecNameName()を使用することができます。その場合、おそらくもっと効率的な方法がありますが、私はこのプロジェクトではSQLには新しく、アプリケーションを遅くするようなものではありません:) – Garcon

関連する問題