数据输入条件

时间:2018-01-11 14:47:53

标签: android sqlite android-sqlite

我正在编写一个简单的应用程序,您可以通过app将数据输入到数据库。我必须制定条件,例如:你不能在姓名字段中输入数字。我知道我必须在onClick中这样做,但我真的不知道如何。你能救我吗?

.subscribe(res => {
    this.allData = res.map(e => {
        e['is_leader'] = true; // as per your rule;
        return e;
    });
});

2 个答案:

答案 0 :(得分:0)

您可以在try / catch中将输入转换为String,或者将输入类型设置为整数(在xml中使用android:inputType="number"

答案 1 :(得分:0)

  

我知道我必须在onClick中执行此操作。

onClick可能不是理想的地方,因为用户已经输入了数据,因此事后是

当用户试图输入此类输入时,通常不允许不可接受(原文如此)输入。

还有其他选择,也许最简单的方法是限制可以通过EditText的XML定义输入的字符,例如:限制为字母只有你可以使用: -

    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

要允许使用的空格(在大小写之间添加空格): -

    android:digits="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ";

但是,实际上你应该使用字符串资源,这样你就可以轻松应对多种语言(语言环境)。

因此,您可以创建一个String资源(res / values / strings.xml),例如: -

    <string name="alphabet">"abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string> 

然后使用: -

    android:digits="@string/alphabet"

以编程方式(或者)您可以使用InputFilter: -

    mAlphaBet = getResources().getString(R.string.alphabet);
    // Define the Input Filter
    InputFilter inputfilter = new InputFilter() {
        public CharSequence filter(CharSequence s,
                                   int start,
                                   int end,
                                   Spanned dest,
                                   int deststart,
                                   int destend) {
            for (int i=0; i < end; i++) {
                // If not in the alphabet then suppress input
                if(!mAlphaBet.contains(String.valueOf(s.charAt(i)))) {
                    return "";
                }
            }
            // Indicate input is OK
            return null;
        }
    };
    // Apply filters (just the 1) to the EditText
    editName.setFilters(new InputFilter[]{inputfilter});
  • 如上所述,从资源中检索mAplhaBet,如果已定义,则再次满足区域设置。