Как использовать элементы в AutoCompleteTextView?

#android #text #autocomplete #integer

#Android #текст #автозаполнение #целое число

Вопрос:

Я хочу преобразовать выбранный элемент в целое число. Когда это будет сделано, я хочу добавить случайное число от 1 до 20, чтобы выбрать целое число. Чем отображать это число в тосте.

Комментарии:

1. Преобразовать элемент в целое число? Какой элемент вы пытаетесь преобразовать?

2. Элементы AutoCompleteTextView.

3. С какими проблемами вы сталкиваетесь?

4. Я не знаю, как это сделать.

5. Знаете ли вы, что такое AutoCompleteTextView? Почему вы не используете edittext?

Ответ №1:

Чтобы преобразовать значение, поступающее из TextView, в целое число, вам просто нужно использовать следующий код:

 EditText tViewNum = (EditText) rootView.findViewById(R.id.number);
String strWord = tViewNum.getText().toString();

Random r = new Random();
int i1 = r.nextInt(21 - 1)   20;

String Randomiser = strWord   " "   il; //the  " "  is used to add a space between the word and the random number. 

Toast.makeText(MainActivity.this, Randomiser   "//any other text you wish to include", Toast.LENGTH_SHORT).show();
  

Обратите внимание, что приведенное здесь случайное число находится в диапазоне от 1 (включительно) до 20 (включительно).

Комментарии:

1. Да, я думаю, это будет решением, но как программа узнает, что было введено в EditText. Это не то же самое, например, если пользователь вводит pear или apple.

2. потому что вы используете эту строку для получения данных из TextView: int num = Integer.parseInt(tViewNum.getText().toString());

3. @mlaferla Toast принимает String в качестве второго параметра, а не int . Пожалуйста, отредактируйте его, и в первой строке есть несоответствие классам, это должен быть EditText. Пожалуйста, измените контекст на this или getApplicationContext() . И я не знаю, почему вы используете rootView . Не могли бы вы объяснить?

4. @Adrian Для ваших целей вы должны использовать EditText not AutoCompleteTextView . Приведенный выше код использует EditText . Если вы хотите использовать ACTV, сначала вам нужно сохранить значения в массиве.

5. @mlaferla почему вы используете rootView ?

Ответ №2:

используйте виджет для AutoCompleteTextView.

«CustomAutoCompleteTextView»

 public class CustomAutoCompleteTextView extends AutoCompleteTextView {

  public CustomAutoCompleteTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
  }

@Override
protected void performFiltering(final CharSequence text, final int keyCode) {
    // String filterText = "";
    super.performFiltering(text, keyCode);


}

/**
 * After a selection, capture the new value and append to the existing
 * text
 */
@Override
protected void replaceText(final CharSequence text) {
    super.replaceText(text);


 }
}
  

Ваш Xml будет выглядеть следующим образом: [Зависит от того, где вы добавляете свой виджет]

     <com.example.widget.CustomAutoCompleteTextView
        android:id="@ id/sent_message_to"
        android:layout_width="0dip"
        android:layout_height="match_parent"
        android:layout_margin="10dip"
        android:layout_weight="1"

        android:imeOptions="actionSend"

        android:hint="name"
        android:gravity="left|center"
        android:padding="10dip"
        android:textColor="@color/green"
        android:textSize="18dp"
        android:visibility="visible"
        android:selectAllOnFocus="true"
        android:inputType="textPersonName"
        android:completionThreshold="3"

        />
  

Основной класс

вы можете установить адаптер для значения списка или объявить массив

 private AutoCompleteAdapter mAutoCompleteAdapter;
private ArrayList<String> mArray = new ArrayList<String>();
private CustomAutoCompleteTextView mAutoFillTextView;
.....

mAutoFillTextView = mViewUtils.createAutoFillTextView(view.findViewById(R.id.sent_message_to), false);

        mAutoCompleteAdapter = new AutoCompleteAdapter(getActivity(), mArray);
        mAutoFillTextView.setAdapter(mAutoCompleteAdapter);
  

и
mAutoFillTextView.addTextChangedListener(новый TextWatcher() {
@Override
public void onTextChanged(конечная последовательность символов s, int start, int before, int count) {

             try {


                mArray.clear();
                String string = s.toString().trim();

                if (mAutoFillTextView.getThreshold() <= string.length() amp;amp; mAllowRequest) {
                    //GET DATA  TO LIST

                } 


            } catch (NullPointerException ignored) {
            }

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                                      int after) {
        }

        @Override
        public void afterTextChanged(Editable s) {
        }
    });