Для создания нашего приложения я предлагаю использовать две активности и пять фрагментов. Aivity_main.xml будет содержать шесть кнопок, 6-11 классы, activity_main11.xml будет являться контейнером для фрагментов fragment_main11.xml -fragment_main15.xml.
Теперь напишем обработчики нажатия на кнопки, по желанию можно установить Toast уведомление, показывающее для какого класса открыто расписание
button11.setOnClickListener(new
OnClickListener()
{
@Override
public void onClick(View v)
{
//Toast.makeText(getBaseContext(),"Класс 11",Toast.LENGTH_SHORT).show();
Intent intent = new Intent();
intent.setClass(MainActivity.this,Main11Activity.class);
Bundle b = new Bundle();
b.putString("classID","11");
intent.putExtras(b);
startActivity(intent);
}
});
В этом коде для открытия контейнера фрагментов применим Intent, так же во вторую активность через new Bundle(), putString("classID", "11") , intent.putExtras() мы передаем classID чтобы узнать, какая кнопка была нажата, это позволит загружать расписание для каждого класса по дням недели.
Вторая активность - контейнер для фрагментов
В этой активности мы будем принимать переданный параметр classID со значением номера класса в функции onCreate в одноименную переменную типа String, и выведем ее в заголовок активности для наглядности
switch(position){
case 0:
fragment_main11 bf1= new fragment_main11();
return bf1;
case 1:
fragment_main12 bf2= new fragment_main12();
return bf2;
case 2:
fragment_main13 bf3= new fragment_main13();
return bf3;
case 3:
fragment_main14 bf4= new fragment_main14();
return bf4;
case 4:
fragment_main15 bf5= new fragment_main15();
return bf5;
default:
return null;
}
при нажатии на вкладки с названием дня недели в ней будет отображаться нужный нам фрагмент.
String-array в файле string.xml
Кто забыл где находится файл string.xml напоминаю "app\src\main\res\values"
Займемся заполнением строковых массивов String-array в файле string.xml, так как у нас шесть классов (11-6), а расписание предполагает пятидневную учебную неделю с понедельника по пятницу нам придется сделать 30 массивов, по 4 четыре урока в день,
имя массива uroki11_vt означает, что это 11 класс, день недели вторник.
Array Adapter для фрагментов
Итак, мы плавно подошли к завершающей фазе написания расписания уроков - это загрузка во фрагменты данных из массивов. У нас есть пять фрагментов, fragment_main11() означает, что в нем будет происходить загрузка данных для всех понедельников, fragment_main12() для вторников и так далее.
Снова будем использовать classID для понимания, какая кнопка была нажата и для какого класса отображать расписание. Опять объявим переменную тип String classID, и в функцию onCreate напишем код получения параметра
Объявим наш ListAdapter adapter, для сбора информации из массивов и, используя конструкцию switch (classID), получим для каждого класса отдельно расписание уроков понедельника во фрагмент fragment_main11.xml
switch(classID){
case "11":
adapter=new ArrayAdapter<>(getActivity(),
android.R.layout.simple_list_item_1,
getResources().getStringArray(R.array.uroki11_pn));
setListAdapter(adapter);
break;
case "10":
adapter = new ArrayAdapter<>(getActivity(),
android.R.layout.simple_list_item_1,
getResources().getStringArray(R.array.uroki10_pn));
setListAdapter(adapter);
break;
case "9":
adapter = new ArrayAdapter<>(getActivity(),
android.R.layout.simple_list_item_1,
getResources().getStringArray(R.array.uroki9_pn));
setListAdapter(adapter);
break;
case "8":
adapter = new ArrayAdapter<>(getActivity(),
android.R.layout.simple_list_item_1,
getResources().getStringArray(R.array.uroki8_pn));
setListAdapter(adapter);
break;
case "7":
adapter = new ArrayAdapter<>(getActivity(),
android.R.layout.simple_list_item_1,
getResources().getStringArray(R.array.uroki7_pn));
setListAdapter(adapter);
break;
case "6":
adapter = new ArrayAdapter<>(getActivity(),
android.R.layout.simple_list_item_1,
getResources().getStringArray(R.array.uroki6_pn));
setListAdapter(adapter);
break;
}
Код следующих фрагментов будет отличаться только именем строкового массива, в fragment_main12() имена массивов будут заканчиваться не на _pn(понедельник) а на _vt(вторник) соответственно.
Итак, можно запускать эмулятор, нажав на кнопку с номером класса, вы увидите информацию о расписании уроков на неделю. Естественно, данный пример не обладает гибкостью и не предполагает внесения, изменения или удаления данных.
Однако, данный пример может быть использован для передачи информации, которая либо не меняется, либо меняется крайне редко и обновление данных будет происходить глобально, вместе с приложением через PlayMarket. К примеру, вместо кнопок на главной форме может быть перечень заболеваний, а во фрагментах, связанных с этим пунктом могут загружаться симптомы, лекарства, рекомендации и тому подобное. Все зависит от вашей фантазии и назначения.
В следующих статьях я вернусь к этому приложению и продемонстрирую, как вместо Array Adapter и массивов использовать базу данных SQLite3, вносить корректировки и добавлять, изменять записи.
Cкачать архив для ознакомления - проект Расписание для уроков:
Видео обзор Создание расписания уроков для андроид устройств:
Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!
We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.