#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
notAutoCompleteTextView
. Приведенный выше код использует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) {
}
});