Главная страница
Навигация по странице:

  • Пользовательский интерфейс главной активности

  • Инициализация главной активности

  • Меню приложения и обработка добавления записи.

  • Пользовательский интерфейс активности редактора.

  • Интерфейс взаимодействия активностей

  • Реализация активности редактора задач

  • Вызов активности редактора

  • Обработка результата вызова активности редактора

  • Пример использования класса Handler

  • Регистрация провайдера контента

  • Асинхронная загрузка данных.

  • Парамонов 5. Что такое механизм настроек Для чего он предназначен Как его применять


    Скачать 121.97 Kb.
    НазваниеЧто такое механизм настроек Для чего он предназначен Как его применять
    Дата31.05.2019
    Размер121.97 Kb.
    Формат файлаdocx
    Имя файлаПарамонов 5.docx
    ТипДокументы
    #79801


    3.3. Вопросы для самопроверки:


    1. Перечислите способы постоянного хранения данных на платформе Android. Объясните, в каких случаях разумно применять каждый из них.

    2. Что такое механизм настроек? Для чего он предназначен? Как его применять?

    3. Перечислите основные классы Android, предназначенные для работы с базой данных SQLite. На примерах объясните, как их применять.

    4. Что такое жизненный цикл базы данных? Какие средства платформы Android позволяют управлять этим жизненным циклом?

    5. Назовите методы класса SQLiteDatabase, предназначенные для работы с данными. На примерах объясните, как их можно использовать.

    6. В чём отличие между методами query() и raw^uery() класса SQLiteDatabase? В каких случаях применяется каждый из них?

    7. Что такое курсор набора данных? Для чего он предназначен? На примерах объясните, как использовать курсоры.


    3.3. Пример приложения, использующего БД для хранения данных
    Описание приложения. Данный раздел содержит пример приложения, использующего базу данных для хранения списка задачи пользователя (to-do list). Пример призван продемонстрировать, как может использоваться БД в приложении, включая выполнение таких действий, как управление жизненным циклом БД, добавление, изменение и получение записей из БД, отображение данных в списке и их редактирование в отдельной активности.

    Приложение содержит две активности. Главная активность предназначена для отображения списка дел. Вторая активность позволяет редактировать атрибуты пользовательской задачи, включающие название, описание и дату выполнения. Внешний вид приложения представлен на рис. 44.

    Класс управления жизненным циклом БД. Для управления жизненным циклом определим в приложении класс DBHelper, унаследованный от класса SQLiteOpenHelper:

    @Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }



    Рис.44. Главная активность и активность редактора в To-do List

    Данный класс создаёт схему данных при первой попытке обращения к БД. Поскольку приложение имеет единственную версию, номер версии в конструкторе класса SQLiteOpenHelper установлен равным 1, а метод onUpgrade() оставлен пустым.

    Каждая задача имеет название (title), описание (description) и дату выполнения (dueDate). Поскольку в SQLite нет специального типа данных для хранения дат, используется строковое представление в формате ISO 8601 (например, 2013-01-21). Для первичного ключа создано поле с названием _ id. Такое название необходимо для правильной работы адаптера списка, связанного с таблицей БД.
    Пользовательский интерфейс главной активности. Описание интерфейса главной активности размещается в файле res/layout/main.xml:


    android:layout_width="fill_parent" android:layout_height="fill_parent"

    xmlns:android="http://schemas.android.com/apk/res/android">


    и содержит единственный элемент — список с идентификатором todoList.

    Инициализация главной активности. Главная активность размещается в классе MainActivity. Будем разбирать содержимое этого класса отдельными фрагментами по мере добавления функциональности в приложение. Начнём с кода инициализации главной активности:

    public class MainActivity extends Activity { private DBHelper dbHelper; private Cursor cursor;

    @Override

    public void onCreate(Bundle savedlnstanceState) { super.onCreate(savedlnstanceState); setContentView(R.layout.main);

    ListView todoListView = (ListView) findViewByld(R.id.todoList); todoListView.setOnItemClickListener(new ListView.OnItemClickListener() { @Override

    public void onItemClick(AdapterView parent, View view, int position, long id) { onToDoListltemClick(id);

    }

    });

    dbHelper = new DBHelper(this);

    cursor = dbHelper.getWritableDatabase().query("todos", null, null, null,

    null, null, "dueDate"); String[] from = new String[] { "title", "description" }; int[] to = new int[] { R.id.titleText, R.id.descriptionText }; SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.todo_item, cursor, from, to, CursorAdapter.FLAG_AUTO_REQUERY); todoListView.setAdapter(adapter);

    }

    При инициализации активности происходит загрузка описания интерфейса из XML-файла, к списку прикрепляется обработчик события выбора элемента, создаётся экземпляр класса DBHelper и помещается в поле класса. Далее осуществляется выборка всех задач из таблицы todos базы данных с сортировкой по сроку завершения в хронологическом порядке. В результате выполнения команды на выборку возвращается курсор, который также сохраняется в поле класса MainActivity. Далее создаётся экземпляр класса SimpleCursorAdapter, который осуществляет отображение записей полученного набора данных на текстовые поля элемента списка.

    Внешний вид элемента списка описывается файлом res/layout/todo_item.xml. Каждый элемент содержит поле для названия задачи и поле для её описания.



    < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">



    Меню приложения и обработка добавления записи. Меню приложения (в формате панели действий) описывается в файле res/menu/main.xml и содержит кнопку добавления задачи:




    android:showAsAction="always" android:icon="@android:drawable/ic_menu_add" />



    Инициализация меню и обработка касания кнопки добавления записи осуществляются стандартным образом в классе MainActivity:

    //...

    @Override

    public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true;

    }

    @Override

    public boolean onOptionsItemSelected(MenuItem item) { Intent intent = new Intent(this, ToDoEditorActivity.class); startActivityForResult(intent, 1); return true;

    }

    //...

    Касание кнопки приводит к вызову активности ToDoEditorActivity, отвечающей за редактирование записи. Поскольку кнопка в панели действий является единственной, метод onOptionsItemSelected() не содержит кода проверки выбранного элемента меню.

    Пользовательский интерфейс активности редактора. Интерфейс активности, предназначенной для редактирования атрибутов задач, включает в себя текстовые поля для ввода названия задачи и её описания, компонент DatePicker для ввода даты завершения задачи, две кнопки «OK» и «Cancel», а также метки (TextView) для описания назначения всех элементов интерфейса.

    Для описания пользовательского интерфейса используется файл res/layout/todo_editor.xml. Он выглядит следующим образом:



    < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" >


    android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left|center_verticary>


    android:layout_height="wrap_content" android:layout_gravity="left|center_vertical"/> < DatePicker android:id="@+id/dueDatePicker" android:layout_width="fill_parent" android:layout_height="wrap .content" />


    написать администратору сайта