Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получения номеров выделенных элементов в списках 
:(
    Опции темы
archerix
Дата 3.9.2006, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.9.2006

Репутация: нет
Всего: нет



Здравствуйте, народ
Начал вот изучать яву и наткнулся на проблему. Вся программа состоит из трех List, программа переходит через них последовательно. Но при входе в последний List надо знать, какие элементы были подсвечены в двух других. Ничего не выходит, вроде все понятно, но при выполнении NullPointerException  smile  Не могли бы знатоки показать маленький примерчик, как такое определять?

PM MAIL   Вверх
W0LF
Дата 3.9.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



1.   Здесь уже обсуждалось такое.
2.1 Заведи в каждом классе листа статическую переменную, которая хранит номер подсвеченного пункта    
      или его имя.

ИЛИ

2.2 Передавай в каждый след. лист ссылку на предыдущий, и делай setDisplay(эта ссылка) 
Просто времени щас нет. поищи пока сам на этом же форуме.Если не найдешь - дам пример.


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
archerix
Дата 3.9.2006, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.9.2006

Репутация: нет
Всего: нет



Если бы я знал, как это все делается... Программирую-то давненько, на на Fortran и Delphi, в книгу по яве пар дней назад впервые заглянул. За эти пару дней, посматривая в книжку, написал вполне полезный мидлет, и вдруг такой облом - заметил, что номера в списках ни фига не получаются  smile  Поковыряю, конечно, но на примере оно лучше, если не трудно. На форуме уже искал, не нашел. Может, конечно, из-за скудности познаний в яве не знал, что искать...

Со злости поставил МидлетПаскаль, там все номера легко отлавливаются. Но выдрать явовский код из него не удалось, сразу в Jar/Jad компилирует  smile  

PM MAIL   Вверх
javastic
Дата 4.9.2006, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



В WTK есть пример DemoUI, там есть пример List'a в которым ты помечаешь нужные пункты, а потом отображаешь то что выбрал.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
archerix
Дата 5.9.2006, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.9.2006

Репутация: нет
Всего: нет



Посмотрю. Но у меня списков несколько, а данные о выделенном элементе почему-то не запоминаются при переходе в другой список...
PM MAIL   Вверх
W0LF
Дата 5.9.2006, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Не запоминаются потому, что ты скорее всего каждый раз при переходе делаешь setDisplay(new MyList())
Каждый раз заново вызывается конструктор и все заново происходит. Поэтому тебе нужно или указатель хранить на предыдущий список, или же в каждом списке сделать статическую переменную, которая будет хранить номер позиции - 
Код

private static int currentPosition = 0;

и изменять ее, тогда при создании этого объекта статическая переменная останется прежней. и все. Это самый легкий способ для запоминания позиции.

Добавлено @ 21:01 
ПРИМЕР:
Делаем класс меню:
Код

public class Menu extends List implements Constants/*, GuiListener  */{
    public Menu(String sTitle){
        super(sTitle, Choice.IMPLICIT);
    }
    public void setSelectedIndex(String element){
        for(int i=0; i<size(); i++){
            if (getString(i) == element)
                setSelectedIndex(i,true);
        }
        if (element == null) setSelectedIndex(0,true);
    }
}

Делаем MainMenu:
Код

public class MainMenu extends Menu implements CommandListener, Constants  {
    private static String index = null;
    Command okCommand;
    public MainMenu(){
        super(ITEM_TITLE_MAINMENU);
        okCommand = new Command("Select",Command.STOP,1);
        addCommand(okCommand);
        setCommandListener(this);
        append("About",null);
        append("EXIT",null);
        setSelectedIndex(index);

    }
    public void commandAction(Command c, Displayable s){
        if (s == this){
            if (c == okCommand){
                int currentIndex = getSelectedIndex();
                String currentItem = getString(currentIndex);
                index = currentItem;
                do{
                    
                    if(currentItem == "About"){
                        Main.setDisplay(new Help());
                       
                        break;
                    }
                    if(currentItem == "EXIT"){
                        //Main.getInstance().notifyDestroyed();
                        break;
                    }
                }while(true);
            }
        }
    }
}

Теперь Help:
Код

public class Help extends Form implements CommandListener {
    Command okCommand;
    public Help(){
        super("About");
        okCommand = new Command("OK",Command.BACK,1);
        addCommand(okCommand);
        setCommandListener(this);
        append("Мир чудесен!");
        append("Сегодня самый лучший день!");

    }
     public void commandAction(Command c, Displayable s){
         if (c == okCommand){
             Main.setDisplay(new MainMenu());
         }
     }
}


Теперь индекс сохраняется. А можно хранить ссылку на лист, это будет так:
Код

public class Help extends Form implements CommandListener {
    Command okCommand;
    Displayable backTo;
    public Help(Displayable backTo){
        super("About");
        this.backTo = backTo;
        okCommand = new Command("OK",Command.BACK,1);
        addCommand(okCommand);
        setCommandListener(this);
        append("Мир чудесен!");
        append("Сегодня самый лучший день!");

    }
     public void commandAction(Command c, Displayable s){
         if (c == okCommand){
             Main.setDisplay(backTo);
         }
     }
}

И тут уже в классе MainMenu вместо 
Код

private static String index = null;

надо
Код

private String index = null;

Есть еще один способ, если тебе это все нужно и сразу, то создай это все в каком-нидь классе, типа Model, и храни ссылки на эти объекты(MainMenu,Help), а потом легко будешь переключаться, но если формочек много и они не сильно важные, такие как Хелп, то первый или второй способ.

Это сообщение отредактировал(а) W0LF - 5.9.2006, 21:08


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
archerix
Дата 5.9.2006, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.9.2006

Репутация: нет
Всего: нет



Цитата(W0LF @  5.9.2006,  20:48 Найти цитируемый пост)
Не запоминаются потому, что ты скорее всего каждый раз при переходе делаешь setDisplay(new MyList())

Ну да, именно так и делаю.  Меня самого это напрягало, получается, я листы постоянно убиваю и создаю заново, но так мне показалось проще с точки зрения начинающего явиста smile 

Спасибо огромное за пример, буду вникать.


PM MAIL   Вверх
W0LF
Дата 6.9.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



smile


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.