5.12.3. Использование базы данных SQLite (Часть 4)

5.12.3. Использование базы данных SQLite (Часть 4)

Последний класс, который необходимо добавить. Добавьте новый класс с названием DetailFragment:

public class DetailFragment extends Fragment {
    // В файле макета разместили два TextView один для заголовка, второй для показа содежимого, для них соответственно необходимо объявить перменные для управления ими через код
    TextView title;
    TextView content;
    // Пременная для доступа к функциям работы с базой данных
    Database db;

    // Функция вызываемая при показе фрагмента внутри Activity
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        // Привязать файл макета detail_fragment.xml к этому фрагменту
        View v = inflater.inflate(R.layout.detail_fragment, container, false);

        // Инициализация переменной класса Database для работы с базой данных
        db = new Database(getContext());

        // Получить ссылку на TextView для заголовка и контента
        title = v.findViewById(R.id.title);
        content = v.findViewById(R.id.content);

        // Получить переданные аргументы по соответствующим ключам
        int id = getArguments().getInt("id");

        // Объявить экземпляр класса DBItem и присвоить значение полученное посредством запроса по уникальному id из базы данных
        DBItem item = db.getItemById(id);
        // Присвоеить значение заголовка виджету TextView
        title.setText(item.title);

        // Присвоить текст к TextView контента. При использовании Html.fromHtml(String) можно текст TextView форматировать по необходимости Html тегами, например для вывода жирного текста в строке надо написать <b>Жирный текст</b>, также можно использовать теги u,i и другие используемые для форматирования текста в html. Например ещё тег <br/> устанавливает перевод строки
        content.setText(Html.fromHtml(item.content));

        // Вернуть View для показа внутри Activity
        return v;
    }
}

Все необходимые классы и ресурсы добавлены, теперь необходимо изменить файл MainActivity.java следующим образом:

public class MainActivity extends AppCompatActivity implements AddItemsDialog.IRefreshList {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Проверить на существование присвоенного значения переменной savedInstanceState, если значение равно null значит Activity только что запустился и можно добавить фрагмент, если не писать эту проверку, каждый раз при восстановлении состояния Activity, например в случае поворота экрана может возникнуть подобная ситуация, фрагмент будет добавляться в Activity
        if (savedInstanceState == null) {
            // Получить экземпляр менеджера фрагментов
            getSupportFragmentManager()
                    // Начать транзакцию фрагментов
                    .beginTransaction()
                    // Добавить в LinearLayout с id = fragmentContainer содержимое фрагмента MasterFragment
                    .add(R.id.fragmentContainer, new MasterFragment())
                    // Установить анимацию для показа фрагмента
                    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
                    // Завершить транзакцию и показать фрагмент
                    .commit();
        }
    }

    // Обновить список при добавлении новой записи
    @Override
    public void RefreshList() {
        MasterFragment master = (MasterFragment) getSupportFragmentManager().findFragmentById(R.id.fragmentContainer);
        if (master != null)
        master.setAdapterToList();
    }
}
Наконец-то... вдохните глубоко, урок закончен

Реклама