Не пытайтесь найти URI в файловой системе, потому что поискать информацию в базе данных очень медленно.
Вы можете получить растровое изображение из URI, передавая поток ввода фабрике, как вы передаете файл фабрике:
InputStream is = getContentResolver().openInputStream(uri);
Bitmap bitmap = BitmapFactory.decodeStream(is);
is.close();
Есть несколько вещей, которые вы можете попробовать, в зависимости от того, насколько верным вы хотите придерживаться своей идеи и сколько работы вы готовы приложить для этого:
Используйте обычное групповое поле, а затем внутри него сделайте первый элемент флажком. Это просто выполнить, но вы теряете цель иметь флажок в качестве заголовка.
Используйте обычное групповое поле, затем в месте, где вы знаете, что заголовок должен идти, поместите ваш флажок. Вам придется выполнить некоторые хитрые вычисления, чтобы заставить его хорошо вписаться и хорошо рисовать без мерцания.
Используйте некоторую форму суперкласса или подкласса / подкласс в рамке группы. Вы можете переопределить обработчик WM_PAINT, чтобы он рисовал только рамку для группового поля. Установите обычный флажок в том месте, где, как вы знаете, должно быть название. Это должно работать лучше, потому что у вас будет больше контроля над рисунком, но, вероятно, будет сложно сделать это правильно. По моему опыту, создание подклассов представляет меньший риск для реализации, чем подклассы.
Вы используете редактор диалоговых окон? Если да, поставьте групповой ящик. Далее, поверх него ставим галочку над строкой группового поля. Отредактируйте ресурс, чтобы установить Z-порядок, или сделайте это в коде. Вы хотите, чтобы флажок был наверху поля группы. Добавьте обработчик для флажка и включите / отключите элементы управления в зависимости от состояния флажка.
Несколько лет назад я написал программу под названием CGroupCheck, и она доступна на CodeProject: http://www.codeproject.com/KB/buttons/ groupcheck123.aspx