Andrvat
@Andrvat
Студент НГУ

Как из класса добавить картинку на экран?

У меня есть база данных SQLite, в которой к каждой строке с информацией, у которой свой _id, прикреплена картинка. В базе данных на данный момент есть столбец полного имени этих картинок. Таких строк несколько. Эта информация и картинка выводится на экран при нажатии на один из элементов ListView, сами картинки хранятся в папке drawable. У меня в приложении они выводятся все однотипно, поэтому был создан один фрагмент, в котором мы заполняем все данные для отображения их на экране пользователя. С выводом текста я разобрался.
Вопрос: как мне, имея имя картинки (или что-то другое, что вы подскажите, изменить не проблема) в базе данных, получить на экране эту картинку? Вывод информации зависит от того, на какой элемент ListView пользователь нажал, поэтому .setImageResource(R.drawable./название\) тут нельзя воспользоваться: нужно сделать так, чтобы на экране показывалась именно та, которая соответствует _id (он же элемент клика по ListView) из БД.

Код фрагмента:
public class HistoryFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment


        Bundle bundle = getArguments();
        String id = bundle.getString("id"); // получаем id, на который пользователь нажал
        DataBaseHelper dataBaseHelper = new DataBaseHelper(getActivity());
        HashMap<String,String> information = dataBaseHelper.getDescription(id); // получаем информацию из БД
        FrameLayout frameLayout = (FrameLayout)inflater.inflate(R.layout.fragment_historyfragment, container, false);

        TextView MainTitleView = frameLayout.findViewById(R.id.maintitle);
        MainTitleView.setText(information.get("title")); // Задаём заголовок

        TextView DescriptionOneView = frameLayout.findViewById(R.id.descriptionone);
        DescriptionOneView.setText(information.get("descriptionOne")); // Задаём первое описание

        ImageView pictureOneView = frameLayout.findViewById(R.id.pictureone); // Задаём первую картинку????

        TextView DescriptionTwoView = frameLayout.findViewById(R.id.descriptiontwo);
        DescriptionTwoView.setText(information.get("descriptionTwo")); // Задаём второе описание


        ImageView pictureTwoView = frameLayout.findViewById(R.id.picturetwo); // Задаём вторую картинку?????

        return frameLayout;
    }
}


Разметка этого фрагмента, которая выводится на экран при нажатии:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".HistoryFragment">

    <!-- TODO: Update blank fragment layout -->
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/maintitle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingTop="5dp"

                android:textAlignment="center"
                android:textAllCaps="true"
                android:textSize="25sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/descriptionone"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:textAlignment="textStart"
                android:textSize="15sp"  />

            <ImageView
                android:id="@+id/pictureone"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:adjustViewBounds="true"
                android:padding="10dp"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                 />

            <TextView
                android:id="@+id/descriptiontwo"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textSize="15sp"/>

            <ImageView
                android:id="@+id/picturetwo"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:adjustViewBounds="true"
                android:padding="10dp"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                />

        </LinearLayout>
    </ScrollView>

</FrameLayout>
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
@YuryBorodkin
Android dev
ну для таких целей используются assets.
Создается папке assets в основной папке приложения (где src,buid, config) - туда кладутся картинки. Их имена и надо хранить в sqlite.
Потом
InputStream ims = getAssets().open("my_image.jpg");
   
    Drawable d = Drawable.createFromStream(ims, null);

и готово.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы