我在android中开发一个赞美诗应用程序,有没有办法让用户知道他们输入的数字在数据库中找不到,因此他们输入赞美诗的赞美诗索引不能立即输入它在编辑文本中。
这是代码的一部分
android:ems="10"
android:inputType="number"
android:maxLength="3"`
答案 0 :(得分:1)
如果您的值在[-99; 999]内,则限制EditText的长度可能有效。 无论如何,你应该阅读并验证号码。
的EditText。
一个。如果您有一个按钮(用户输入赞美诗编号并单击按钮进行查找),请在onClick
方法中添加如下内容:
Editable e = yourEditText.getText();
String hymnNumberInString = "";
if (e != null) s = hymnNumberInString.toString();
if (hymnNumber.isEmpty()) showEmptyAlert(); //show alert that string is empty;
try {
Integer hymnNumber = Integer.valueOf(s);
if (!findHymn(hymnNumber)) {//here is a search
showErrorMessage();
}
} catch (NumberFormatException e) {
e.printStackTrace();
showErrorMessage();
}
湾如果您没有按钮,可以添加TextWatcher并在超出赞美数时显示错误:
yourEditText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
if (s != null && s.length() != 0) {
try {
Integer hymnNumber = Integer.valueOf(s);
if (findHymn(hymnNumber)) {
//everything is ok, do what you want with it
// BUT!!! Remember that user might entered only 1 and is still entering!
// To ensure that user already entered (or maybe already entered) you can wait for 2 sec.
//E.g. by using someHandler.postDelayed(runnableWithThisCodeInside, 2000);
} else {
showErrorMessage();
}
} catch (NumberFormatException e) {
e.printStackTrace();
showErrorMessage();
}
}
}
});
℃。您可以使用this nice library to simplify proccess of validation。
对于预定义的数字集,您可以使用NumberPicker。该组件将String数组作为输入(通过setDisplayedValues()
) - 因此您可以使用数据库中的数字/字符串填充它。它的可编辑(除非你限制它) - 所以你的用户仍然可以输入他想要的数字。
答案 1 :(得分:0)
有没有办法让用户知道他们输入的号码在数据库中找不到。
是的,你可以这样做,考虑到你使用EditText让用户输入数字,从下面获取文字
EditText mEdit = (EditText)findViewById(R.id.edittext);
Integer number=Integer.valueOf(editText.getText.toString());
现在你有了一个数字,你可以在数据库表上运行查询以匹配相应的值,无论它是否存在于数据库中。这样的事情
int count= SELECT count(*) FROM tbl_user
WHERE name = ' + number + '
if(count>0){
Log.d("Count","Value exist in database");
}