ListField и кнопка фокуса проблема на одном экране - PullRequest
0 голосов
/ 09 января 2012

Привет всем, я застрял на одной проблеме.Я реализовал ListField на одном экране.В верхней части экрана я использовал один HorizontalFieldManager для хранения TitleLabel and Two Butons.Я нажал на экран во всех строках списка.Моя проблема в том, что позвольте предположить, когда я нахожусь в 4-й строке, и я выбрал то, что я хочу, затем, когда я нажимал на кнопку, кнопка работала, но экран, который я реализовал в 4-й строке, также появляется, как этого избежать.Я тестирую его на симуляторе шторма 9550 и использую плагин Blackberry eclipse 5.0.У меня заканчиваются идеи, пожалуйста, помогите мне.

навигационный клик похож на это

protected boolean navigationClick(int status, int time) {

    selectListAndButton();
    return true;

}       

// А вот метод selectListAndButton

private selectListAndButton(){
 Field field = getFieldWithFocus().getLeafFieldWithFocus();
    if(field == backCustomButton){
        //Popped the active Screen

    }else if(field == saveCustomButton){
        //Saving some Data to the Database And pushing another Screen here
                    // problem comes here if i am at 2nd row of the listfield and selects  
                     something from there and clicked on the button the screen which was  

                     implemented at 2nd row also appears   

    }

    else if (_list.getSelectedIndex() == 0){    
        //Called a date picker

    }
            else if (_list.getSelectedIndex() == 1){    
        //Pushed some another screen 

    }

           else if (_list.getSelectedIndex() == ){  
        //Pushed some another screen 

    }

Ответы [ 2 ]

1 голос
/ 09 января 2012

Вам необходимо переопределить onTouch для Screen, а конкретные функции вызова зависят от координат события и Field границ:

protected boolean touchEvent(TouchEvent message) {
   if (isTouchInside(message, saveCustomButton)) {
      save();
   } else {
      showNextScreen();
   }
}

private boolean isTouchInside(TouchEvent messages, Field field) {
   int eventCode = message.getEvent();       
   int touchX =  message.getX(1);
   int touchY =  message.getY(1);

   XYRect rect = field.getContentRect();

   return rect.contains(touchX, touchY);
}
0 голосов
/ 10 мая 2012

Я решил это.но опубликовать ответ поздно.Я просто отбросил идею использования ListField, потому что у меня не так много строк для добавления.Так что я только что использовал маленький трюк, вместо этого использовал ListField Я использовал HorizontalFieldManager и он выглядит как List, так что все работает отлично.

Спасибо, ура :))

...