Вопрос по java – Поместите текст держателя в AutoCompleteField в blackberry

1

У меня есть местоAutoCompleteField в одном из моих экранов в приложении Blackberry. Я должен показать текст заполнителя, чтобы дать пользователю подсказку для ввода информации.

Вот код нижеAutoCompleteField

BasicFilteredList filterList = new BasicFilteredList();
        String[] address = { "T 115 Centro Galleria Shopping Centre, Cnr Old Collier and Walters Road Morley WA 1522", 
                "1423 SEAVIEW POINT POINT COOK VIC 2674",
                "Lot 1498 Yarraman Road Wyndham Vale VIC 3795", 
                "Lot 3506 Witchmount Close Hillside VIC 4055",
                "6 Paas Place Williamstown VIC 4233", 
                "Lot 99 14 James Close Sunbury VIC 4502", 
                "1 Charlotte Street Clayton South VIC 4779" };

        filterList.addDataSet(1, address, "address", BasicFilteredList.COMPARISON_IGNORE_CASE);
        AutoCompleteField autoCompleteField = new AutoCompleteField(filterList){
            public void onSelect(Object selection, int SELECT_TRACKWHEEL_CLICK) {
                 ListField _list = getListField();
                 if (_list.getSelectedIndex() > -1) {
                     if(selectedText!=null){
                         BasicFilteredListResult result = (BasicFilteredListResult) selection;
                         selectedText.setText(result._object.toString());
                     }
                 }
             }
        };
        add(autoCompleteField);

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

Благодарю.

Ваш Ответ

1   ответ
2

показанный здесь для обычных полей EditFields, В основном вам нужно переопределитьpaint() метод вAutoCompleteField подкласс. Вpaint(), вы проверите и посмотрите, является ли поле пустым, и если это так, вы вручную рисуетеplaceholder текст, который вы хотите.

Разница в том, чтоAutoCompleteField этоManager сBasicEditField внутри него. Таким образом, чтобы правильно нарисовать текст, вам нужно вычислить смещения x и y поля редактирования в родительском элементе.Manager (AutoCompleteField).

Итак, замените вашAutoCompleteField экземпляр с экземпляром этого класса:

   private class CustomAutoCompleteField extends AutoCompleteField {
      private int yOffset = 0;
      private int xOffset = 0;

      public CustomAutoCompleteField(BasicFilteredList filteredList) {
         super(filteredList);
      }

      protected void paint(Graphics g) {
         super.paint(g);
         if (xOffset == 0) {
            // initialize text offsets once
            xOffset = getEditField().getContentLeft();
            yOffset = getEditField().getContentTop();
         }
         String text = getEditField().getText();
         if (text == null || text.length() == 0) {
            int oldColor = g.getColor();
            g.setColor(Color.GRAY);
            g.drawText("enter text", xOffset, yOffset);
            g.setColor(oldColor);
         }
      }

      public void onSelect(Object selection, int SELECT_TRACKWHEEL_CLICK) {
         ListField _list = getListField();
         if (_list.getSelectedIndex() > -1) {
            if(selectedText!=null){
               BasicFilteredListResult result = (BasicFilteredListResult) selection;
               selectedText.setText(result._object.toString());
            }
         }
      }
   }

Я проверил это на OS 5.0 с экземпляром, у которого не было никакого поля или набора отступов. Вполне возможно, что при разных макетах вам может понадобиться настроить логику для вычисления смещений x и y. Но приведенный выше код показывает основную идею. Удачи.

Edit: приведенный выше код представлен с оговоркой, что вашonSelect() Метод явно полагается на код, который не показан. Таким образом, приведенный выше код не будет компилироваться. Я ушелonSelect() чтобы показать, что я по сути просто заменяю анонимный класс, который у вас изначально был, и не делаю ничего другого в вашемonSelect() метод, так как он не имеет прямого отношения к проблеме текста заполнителя.

Спасибо, Нейт. Я это попробую. npanigrahy

Похожие вопросы