当我点击星形图像时,评级星星正在隐藏

时间:2015-01-17 06:33:27

标签: blackberry blackberry-eclipse-plugin rating

我的要求是当我点击位图更改时创建5颗星,当“未点击”位图变回默认值时,如果没有点击星号1,那么后面的所有4颗星都不能被点击,如果点击星号2那么明星3必须是可点击的,并且星星4-5必须是不可点击的(然后向后)如果已经选择了所有5个星,则只有star5必须是可点击的,如果星5和4未被点击,那么star3必须是可点击的星2-1必须不是可点击等。

public class Starscreen extends MainScreen
{
protected static BitmapField Star1 = null;
protected static BitmapField Star2 = null;
protected static BitmapField Star4 = null;
protected static BitmapField Star5 = null;
protected static final Bitmap StarClicked = null;
protected static BitmapField Star3 = null;
BitmapField bitmapField1;
private Bitmap StarNotClicked;
public  Starscreen(Secondscreen secondscreen)
{
    setTitle("Star Screen"); 
LabelField RateDeal = new LabelField("Rating: ");
     Mainlayout.add(RateDeal);
        HorizontalFieldManager StarManager=new    HorizontalFieldManager   
        (USE_ALL_WIDTH);
        final Bitmap StarNotClicked = Bitmap.getBitmapResource("Star3.png");
        final Bitmap StarClicked = Bitmap.getBitmapResource("Star4.png");

     Star1 = new BitmapField(StarNotClicked,BitmapField.FOCUSABLE){
         private Object StarClicked;

        protected boolean navigationClick(int status, int time){
         fieldChangeNotify(1);
         Star1.setBitmap((Bitmap) StarClicked);
         Star2.setBitmap(StarNotClicked);
         Star3.setBitmap(StarNotClicked);
         Star4.setBitmap(StarNotClicked);
         Star5.setBitmap(StarNotClicked);
         AmountOfStarsSelected(1);
         return true;
         }
         };
         Star2 = new BitmapField(StarNotClicked,BitmapField.FOCUSABLE){
         private Object StarClicked;

        protected boolean navigationClick(int status, int time){
         fieldChangeNotify(1);
         Star1.setBitmap((Bitmap) StarClicked);
         Star2.setBitmap((Bitmap) StarClicked);
         Star3.setBitmap(StarNotClicked);
         Star4.setBitmap(StarNotClicked);
         Star5.setBitmap(StarNotClicked);
         AmountOfStarsSelected(2);
         return true;
         }
         };
         Star3 = new BitmapField(StarNotClicked,BitmapField.FOCUSABLE){
        // private Object StarClicked;

        protected boolean navigationClick(int status, int time){
         fieldChangeNotify(1);

         Star1.setBitmap((Bitmap) StarClicked);
         Star2.setBitmap((Bitmap) StarClicked);
         Star3.setBitmap((Bitmap) 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);
         Mainlayout.add(StarManager);
         add(Mainlayout);
 }
  }

通过执行上面的代码,我收到一个错误,它显示了AmountOfStarsSelected()的创建方法;但我不知道我应该在AmountOfStarsSelected()中使用什么条件;请帮帮我,我是黑莓新手

1 个答案:

答案 0 :(得分:0)

我说要为此单独创建一个类,从HorizontalFieldManager扩展。让该类创建5个按钮并将它们布局,并包含一个本地状态变量int level。在此课程中创建公开setLevel(int level)getLevel()方法。等级指的是当前所选的星。

setLevel中输入以下代码:

public void setLevel(int level)
{
    if(Math.abs(this.level - level) != 1)
    {
        return; // this.level refers to your local state. return because there is no change, or the user didn't click 1 up or down.
    }

    if(level == 0)
    {
          Star1.setBitmap(StarClicked);
    }
    else
    {
          Star1.setBitmap(StarNotClicked);
    }

    if(level == 1)
    {
          Star2.setBitmap(StarClicked);
    }
    else
    {
          Star2.setBitmap(StarNotClicked);
    }

    if(level == 2)
    {
          Star3.setBitmap(StarClicked);
    }
    else
    {
          Star3.setBitmap(StarNotClicked);
    }

    if(level == 3)
    {
          Star4.setBitmap(StarClicked);
    }
    else
    {
          Star4.setBitmap(StarNotClicked);
    }

    if(level == 4)
    {
          Star5.setBitmap(StarClicked);
    }
    else
    {
          Star5.setBitmap(StarNotClicked);
    }

    this.level = level;
}

在每个星星中,您都应该调用此setLevel方法

 Star1 = new BitmapField(StarNotClicked, BitmapField.FOCUSABLE){
      protected boolean navigationClick(int status, int time)
      {
          setLevel(0); // If these fields are the only thing in your horizontal field you can get away with using setLevel(getIndex());
          return true;
      }
 };

请记住,在构造函数中,您应该将level设置为-1,然后调用setLevel(0),以便默认情况下可以选择第一个星号。

相关问题