Я ищу совет, как это сделать.
Я хочу иметь действие, в котором пользователь выбирает из галереи Android, тогда изображение будет добавлено в представление сетки для действия. Я успешно реализовал оба варианта по отдельности, но когда мне приходится их комбинировать, я теряюсь. Руководство по Grid View находится здесь. Проблема в том, что в учебнике по сетке используются изображения из res / drawable, поэтому uri, который я получаю из галереи, не совсем работает.
Как мне установить изображение внутри класса ImageAdapter? Я пытался сделать imageView.setImageBitmap (bitmap) с адресом uri одного из изображений в моем телефоне, но это не сработало.
Я думаю о создании ArrayList of String, который содержит uri для изображений, полученных из галереи. Таким образом, я могу легко добавлять, удалять и сохранять изображения.
Другие вопросы, связанные с этим, заключаются в том, что если я получу отображаемые изображения, обновятся ли они, если я просто снова вызову setAdapter? удалит работу автоматически, если я удалю из исходного ArrayList?
Спасибо
Ниже приведен код из сетки, который я редактировал:
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return imageId.size();
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
Uri targetUri = Uri.parse(tests.get(0));
//tests contains the uri of the photo i'm trying to import from my phone gallery in string form
Bitmap bitmap;
bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(targetUri));
imageView.setImageBitmap(bitmap);
return imageView;
}
}