заполнение списка с изображениями на устройстве - PullRequest
0 голосов
/ 12 июля 2011

Хорошо, поэтому я провел последние два дня в поисках хорошего простого примера того, как использовать изображения на устройстве для заполнения представления списка, и я пришел к выводу, что простого способа сделать это не существует. Я знаю, что каждый раз, когда я собираю по кусочкам фрагменты примеров, которые обычно заканчиваются большим количеством лишнего кода, который мне не нужен. Может кто-нибудь, пожалуйста, покажите мне, как просто загрузить изображения с устройства в виде списка. Здесь нет ни книги, ни учебника, ни поста, который просто показывает, как это сделать, и смешно и безумно одновременно.

1 Ответ

1 голос
/ 12 июля 2011

Вот остальная часть кода, используя SDImageLoader, связанный с вышеупомянутым отсюда: http://www.samcoles.co.uk/mobile/android-asynchronously-load-image-from-sd-card

Класс ListAdapter:

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);
}
}

В фактической ListActivity, в вашем onCreate () установите адаптер списка:

private void bindData() {       
    Cursor c = mDbHelper.fetchAllPBs();
    startManagingCursor(c);     
    setListAdapter(new PBListAdapter(this, R.layout.pb_list_item, c));
}

В моем примере абсолютные пути к файлам изображений сохраняются в базе данных при добавлении через приложение.

...