Рейтинг Звезд как в андроиде

Моя цель состоит в том, чтобы создать звездное поле, как в Android у них есть звездное поле рейтинга. Я зашел так далеко, чтобы выполнить следующее:

  • создать звездные поля (5)
  • при щелчке растровое изображение изменяется.
  • Когда "Unclicked" растровое изображение возвращается к значению по умолчанию.

Мой следующий шаг - сделать следующее: если звезда 1 не нажата, то все 4 звезды после не должны быть нажатыми, если звезда 2 нажата, звезды 3 должны быть нажатыми, а звезды 4-5 не должны нажиматься (и затем назад) если были выбраны все 5 звезд, только звезды 5 должны быть активными, если звезды 5 и 4 не нажаты, то звезды 3 должны быть активными, звезды 2-1 не должны нажиматься и т. д.

Я могу предоставить вам фрагмент кода (проверьте ссылку) с тем, что я уже сделал: http://supportforums.blackberry.com/t5/Java-Development/Rating-Stars-like-in-android/m-p/1942559

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

2 ответа

Решение
LabelField RateDeal = new LabelField("Rating: ");
    HorizontalFieldManager StarManager=new HorizontalFieldManager(USE_ALL_WIDTH);
    final Bitmap StarNotClicked = Bitmap.getBitmapResource("rating_star.png");
    final Bitmap StarClicked = Bitmap.getBitmapResource("rating_star_focus.png");

    Star1 = new BitmapField(StarNotClicked,BitmapField.FOCUSABLE){
        protected boolean navigationClick(int status, int time){
            fieldChangeNotify(1);
            Star1.setBitmap(StarClicked);
            Star2.setBitmap(StarNotClicked);
            Star3.setBitmap(StarNotClicked);
            Star4.setBitmap(StarNotClicked);
            Star5.setBitmap(StarNotClicked);
            AmountOfStarsSelected(1);
            return true;
        }
    };
    Star2 = new BitmapField(StarNotClicked,BitmapField.FOCUSABLE){
        protected boolean navigationClick(int status, int time){
            fieldChangeNotify(1);
            Star1.setBitmap(StarClicked);
            Star2.setBitmap(StarClicked);
            Star3.setBitmap(StarNotClicked);
            Star4.setBitmap(StarNotClicked);
            Star5.setBitmap(StarNotClicked);
            AmountOfStarsSelected(2);
            return true;
        }
    };
    Star3 = new BitmapField(StarNotClicked,BitmapField.FOCUSABLE){
        protected boolean navigationClick(int status, int time){
            fieldChangeNotify(1);
            Star1.setBitmap(StarClicked);
            Star2.setBitmap(StarClicked);
            Star3.setBitmap(StarClicked);
            Star4.setBitmap(StarNotClicked);
            Star5.setBitmap(StarNotClicked);
            AmountOfStarsSelected(3);
            return true;
        }
    };
    Star4 = new BitmapField(StarNotClicked,BitmapField.FOCUSABLE){
        protected boolean navigationClick(int status, int time){
            fieldChangeNotify(1);
            Star1.setBitmap(StarClicked);
            Star2.setBitmap(StarClicked);
            Star3.setBitmap(StarClicked);
            Star4.setBitmap(StarClicked);
            Star5.setBitmap(StarNotClicked);
            AmountOfStarsSelected(4);
            return true;
        }
    };
    Star5 = new BitmapField(StarNotClicked,BitmapField.FOCUSABLE){
        protected boolean navigationClick(int status, int time){
            fieldChangeNotify(1);
            Star1.setBitmap(StarClicked);
            Star2.setBitmap(StarClicked);
            Star3.setBitmap(StarClicked);
            Star4.setBitmap(StarClicked);
            Star5.setBitmap(StarClicked);
            AmountOfStarsSelected(5);
            return true;
        }
    };
    StarManager.add(Star1);
    StarManager.add(Star2);
    StarManager.add(Star3);
    StarManager.add(Star4);
    StarManager.add(Star5);
        add(StarManager);

Эта статья полезна для оценки звезды на ежевике согласно вашему требованию.

http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800332/800505/800608/How_to_-_Implement_advanced_buttons,_fields,_and_managers.html?nodeid=2406256&vernum=0

Другие вопросы по тегам