【问题标题】:How to check if username exists in EditText(Text Changed Listener) by using Firebase.?如何使用 Firebase 检查用户名是否存在于 EditText(Text Changed Listener) 中。?
【发布时间】:2017-08-15 18:42:24
【问题描述】:

我尝试了很多方法。但没有任何效果。请你帮帮我。我的 Firebase 结构是I want to check username exists or not from searching in Usernames

它通过单​​击提交按钮起作用。但是,我想在 EditText 上实现它,并自动搜索更改的文本。我该怎么做。? 高级感谢

        usrnm.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, 
    int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        mRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (dataSnapshot.getValue().equals(usrname)){
                   usrnm.setError("Username Unavailable");
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

【问题讨论】:

  • 你只得到一个值吗??我不这么认为....
  • 不。我什么也没得到。我用 toast 试过了。效果很好......
  • 我没有得到任何值。但是,我用 toast 检查了它。它有效..
  • 你烤了什么? dataSnapshot.getValue() ?
  • 否。我只检查了editText...我检查了它是否工作。

标签: android android-layout firebase firebase-realtime-database android-edittext


【解决方案1】:

是的,您可以在 onchange 文本和您的 firebase 数据快照之后使用 textwatcher 和内部三种方法来获取数据并与此处的任何查询评论的 edittext 值进行比较。

【讨论】:

  • 现在请检查我编辑的问题。有什么问题吗?
【解决方案2】:

在 EditText 中使用 TextChangeListner。
例如...

EditText username = (EditText)findViewById(R.id.eg);
username.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            //here when user enter our username in EditText (While entering)
        }

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

【讨论】:

  • 现在请检查我编辑的问题。有什么问题吗?
【解决方案3】:

您可能会遇到一些错误,因为我是凭记忆写的,但您应该这样做。

       ArrayList<String> allUserName = new ArrayList();
       mRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
             allUserName =(ArrayList<String>) 
              dataSnapshot.getValue(String.class);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });


    EditText username = (EditText)findViewById(R.id.et);
    username.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, 
     int i2) {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int 
 i2) {
        if (allUserName.contains(usrname)){
               usrnm.setError("Username Unavailable");
            }
    }

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

【讨论】:

    猜你喜欢
    • 2017-02-17
    • 2019-01-04
    • 2018-11-27
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多