Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
#1

Как реализовать трехуровневое меню в ListView? - Программирование Android

26.11.2014, 15:18. Просмотров 826. Ответов 19
Метки нет (Все метки)

Здравствуйте!Как вообще реализуются такие вещи в приложениях?Есть список меню из 4-х пунктов созданный с помощью ListView. Cамо собой стартует этот список в MainActivity. Далее,если например нажать на первый пункт (Item1) меню,должен открыться другой список ListView уже с другими пунктами (Item1.1 , Item 1.2 и т.д.). Теперь у меня возник вопрос! Неужели для открытия следующего списка (по нажатию на Item1) нужно создавать свою Activity (например OneActivity) и так для каждого пункта? Это сколько ж Activity я насоздаю. Думаю это как-то не правильно. Может мне понадобиться в общей сложности 50-100 пунктов. Как быть?
Заранее спасибо.
P.S. Прикрепил схему для наглядности
Кликните здесь для просмотра всего текста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2014, 15:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как реализовать трехуровневое меню в ListView? (Программирование Android):

Хочу сделать подписи к меню, меню у меня создано ListView, есть два массива, как их передать в адаптер? - Программирование Android
public class MainMenu extends ListActivity { public void onCreate(Bundle cicle) { super.onCreate(cicle); ...

Как реализовать поиск по Listview? - Программирование Android
Listview adapter public class ListViewAdapter extends BaseAdapter { TextView theme; TextView contacts; TextView...

Как реализовать swipe меню - Программирование Android
Подскажите как реализовать подобное меню.

ListView и контекстное меню - Программирование Android
Подскажите как сделать так, чтобы контекстное меню знало пункт listview из которого оно было вызвано? Пытался сохранить пункт в...

Контекстное меню в ListView - Программирование Android
Здравствуйте,выложите пожалуйста рабочий код контекстного меню для listview и напишите пожалуйста куда вставлять этот код.

Выпадающее меню для каждого пункта ListView - Программирование Android
Здравствуйте! Как реализовать подобное меню в списке? Я придумал только с использованием spinner-а в каждом item's view-е, но...

19
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
26.11.2014, 15:23 #2
Kroshandowski, товарищ, вы неправильно прикрепили вложение. Чем вам не понравился ExpandedListView? Может быть, его можно доработать до трёх уровней. Если же вы хотите при нажатии на элемент списка показывать другой список (с дочерними элементами), можете использовать ту же активность или даже фрагменты. А даже если используете другую активность, то больше 3 не потребуется (по числу уровней).
0
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
26.11.2014, 16:04  [ТС] #3
CoolMind, Просто конечный контент это текст отображающийся через string в файле content111.xml и таких файлов будет много (т.е. для каждого конечного item'a будет свой content.xml файл). Как мне визуально пролистать меню в одной и той же активности и дойдя до конечного itema по нажатию отобразить содержимое в этом же Activity или в другом, специально созданным для этого?
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
26.11.2014, 16:23 #4
Kroshandowski, не совсем понятно, что такое конечный item.
Если вы разбираетесь в ListView, то знаете, что за его отображение отвечает так называемый адаптер, который и хранит данные. Возможно менять данные в адаптере. Например, щёлкнули на пункт 3, весь список заменится на новый, в котором будут показаны дочерние для пунта 3 элементы. Для этого вам надо запустить процедуру заполнения адаптера заново, а потом выполнить notifyDataSetChanged(). Когда будете возвращаться с более нижнего уровня назад, вам нужно будет снова загрузить список, но более высокого уровня, и прокрутить к нужному элементу (для этого есть методы прокрутки списка).
Ну не знаю, что ещё рассказать.
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
26.11.2014, 18:33 #5
Kroshandowski,

CoolMind дело говорит.

Для наглядности найдите реализацию File Manager/Explorer'a и покрутите.
Думаю, его поведение наиболее отвечает вашим потребностям - нажал на дирректорию, "свалился" в поддиректорию с своим собственным содержимым...
1
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
26.11.2014, 21:51  [ТС] #6
Armagedo, реализацию нашел и опробовал. Все бы хорошо,но ведь во всех ФМ идет переход между папками. Так сказать приложение просто читает содержимое папок и переходит. Кароч я не знаю как объяснить))))
В общем изложу суть "задуманного приложения". У меня изначально был MainActivity и в нем было 4 категории. По нажатию на одну из категорий осуществлялся переход на Activity конкретной категории (для каждой категории я сделал отдельный Activity). И уже после перехода появлялся контент считываемый из файла strings.
Только вот теперь задумка расширилась и теперь нужно много категорий и я подумал, что будет тупо для каждой категории делать свой Activity. Есть у кого ссылки на примеры? Что-то похожее на explorer'ы внутри проекта или типа читалок,когда выбираешь книгу из множества разделов.
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
26.11.2014, 22:05 #7
Kroshandowski, а ты не читай содержимое папок.
Ты читай то, что нужно тебе

Эта, без обид, с такой постановкой ТЗ я похоже пас...
0
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
26.11.2014, 22:06  [ТС] #8
CoolMind, Armagedo, тут нашел реализацию,но там они парсят через инет. А на вид как надо.
Ссылка
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
26.11.2014, 22:17 #9
Kroshandowski,

через чего через чего они парсят?

Они отправляю запросы.
В ответ получают ответы в форме JSON-строки.
И уже её парсят, кидая во всякие JSONObject'ы.

Давай, делай начинай чего-нибудь уже.
По ходу разберешься что к чему.
1
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
26.11.2014, 22:30  [ТС] #10
Цитата Сообщение от Armagedo Посмотреть сообщение
через чего через чего они парсят?
Ну явно же не из папок в телефоне. Ну а если придираться к словам то они не
Цитата Сообщение от Armagedo Посмотреть сообщение
Они отправляю запросы.
, а ОТПРАВЛЯЮТ.
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
26.11.2014, 22:44 #11
Жги дальше...
Адьос амиго.
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
27.11.2014, 10:28 #12
Kroshandowski, я мельком прокрутил пример, к сайту отношусь с уважением и часто беру оттуда примеры. Если речь идёт о JSON, то это, пожалуй, лучший способ работы с сервером. У вас же ситуация с файлами xml (без сервера), что немного сложнее, но тоже решаемо. В общем, вам правильно посоветовал Armagedo, начните программировать и дальше сами разберётесь.
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
27.11.2014, 12:05 #13
Kroshandowski, создайте класс, который будет содержать всю информацию нужную для отображения. Пример для самой простой читалки:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Book{
 
private int id;
private String bookText;
 
public Book(int id){
     this.id = id;
}
 
public void setText(String text){
     this.bookText  = text;
}
 
public String getText(){
     return this.bookText;
}
 
public int getId(){
    return this.id;
}
 
}
Далее создайте ArrayList экземпляров вашего класса, передавайте этот лист в адаптер ListView, каждому элементу присваиваете тэг

Java
1
item.setTag(currentBook);
Далее в обработчике onItemClickListener добавляете переход к активити и кладете вашу книгу в интент:

Java
1
2
3
Intent intent = new Intent(context, BookActibity.class);
intent.putExtra("book", (Book) item.getTag);
startActivity(intent);
Для того чтобы ваш экземпляр класса Book записался в интент он должен реализовать интерфейс Serializable:

Java
1
2
public class Book implements Serializable{
//Просто добавьте эту строчку к определению класса.
Ну и в onCreate активити достаем вашу книгу:

Java
1
2
3
4
5
6
7
8
9
10
onCreate(){
 
Intent intent = getIntent();
Book currentBook = (Book) intent.getSerializableExtra("book");
//Ну и дальше достаем все нужные данные из экземпляра класса Book
//У нас только текст, его и достанем:
String bookText = currentBook.getText();
 
 
}
0
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
27.11.2014, 22:43  [ТС] #14
Spelcrawler, нашел пример на этом сайте: тыц в самом конце поста тема: "Переключаемся между двумя списками". Так как форума там нет,думаю обсудить это здесь с вами. В принципе там все как надо,основное листание категорий происходит в MainActivity. Но дело в том,что если мы находимся на втором уровне вложенности,то по нажатию на кнопку "Back" мы не возвращаемся на исходный первый уровень (ну или главное меню),а просто выходим из приложения.
Да,можно дописать кнопку "Back" для заполнения listView списком из адаптера главного меню,НО как же тогда осуществить выход из приложения по этой же самой кнопке "Back"?
Заранее спасибо.
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
28.11.2014, 09:39 #15
Kroshandowski, очевидно, требуется определить, на каком уровне вы находитесь. Если на первом, то заставить кнопку "Назад" выходить, иначе - переходить на уровень выше.
0
28.11.2014, 09:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2014, 09:39
Привет! Вот еще темы с ответами:

ListView, ToggleButton, SQLite, CursorAdapter. Как найти idItem в ListView, где была нажата ToggleButton? - Программирование Android
Добрый день. Затрудняюсь понять один момент: У меня есть ListView, который заполнен Items. Каждый Item - это свой XML. Пока...

Помогите реализовать меню паузы в игре - Программирование Android
Доброго времени суток! Прошу помочь мне реализовать меню паузы в игре. Меню делаю при помощи dialog следующим образом: pauseMenu = new...

По умолчанию меню тулбара является прозрачным и сливается с фоном, как изменить фон текста меню? - Программирование Android
Здравствуйте уважаемые форумчане! Возникла следующая проблема, я использую для создания меню в xml файле теги <menu> и <item>, но дело в...

ListView. После добавления кнопки перестал быть доступен сам ListView - Программирование Android
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам список стал недоступен для клика, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru