亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Android中正確使用編輯文本更改偵聽器?

如何在Android中正確使用編輯文本更改偵聽器?

海綿寶寶撒 2021-05-21 18:06:23
如何正確使用Android的編輯文本更改偵聽器?我知道對于某些人來說這聽起來有點容易,但是我對這個問題感到困惑。我曾經在應用程序中編輯有關我的搜索功能的文本更改偵聽器。然后我使用了一個過濾器,以根據用戶輸入的內容進行過濾。例如,用戶類型ka和karl,kamille將被建議到列表中。首先,我將recyclerview可見性設置為false,以便在啟動時不會顯示recyclerview,并且僅當edittext不為null或我應該說用戶已經在輸入時,它才可見。我已經做過,如果用戶鍵入任何單個字符,則recyclerview將變為可見,但之后便保持不變。我想如果編輯文本為null,則recyclerview將再次變得不可見。這是我的應用程序中有關編輯文本更改偵聽器的代碼。   searchusersedittext.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) {                       }        @Override        public void afterTextChanged(Editable s) {            if(searchusersedittext!=null) {                recyclerViews.setVisibility(View.VISIBLE);                filter(s.toString());            }            else if(searchusersedittext.equals("")){                recyclerViews.setVisibility(View.INVISIBLE);            }            else if(searchusersedittext==null){                recyclerViews.setVisibility(View.INVISIBLE);            }            else{                recyclerViews.setVisibility(View.INVISIBLE);            }        }    });不對嗎 還是我錯過了什么?
查看完整描述

2 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

它保持可見,因為searchusersedittext在該調用中始終為非null(如果為null,則對的早期調用searchusersedittext.addTextChangedListener將失敗,并帶有NullPointerException),因此,一旦您鍵入任何內容,它每次都只會進入第一種情況(保持可見)。


也searchusersedittext.equals("")不會檢查EditText中是否有空條目,因為它searchusersedittext是一個EditText對象,而不是輸入的字符串。即使沒有輸入任何文本,EditText對象仍然存在。


嘗試這樣的事情:


@Override

public void afterTextChanged(Editable s) {

    String txt = searchusersedittext.getText().toString();

    // or String txt = s.toString();

    if( !txt.isEmpty() ) {

        recyclerViews.setVisibility(View.VISIBLE);

        filter(txt);

    }

    else {

        recyclerViews.setVisibility(View.INVISIBLE);

    }

}


查看完整回答
反對 回復 2021-05-26
?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

private Timer timer;


    TextWatcher searchTextWatcher = new TextWatcher() {

    @Override

    public void afterTextChanged(Editable arg0) {

        timer = new Timer();


        timer.schedule(new TimerTask() {


            @Override

            public void run() {

               // do your actual work here

            }

        }, 600); 

    }

    @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 (timer != null) {

            timer.cancel();

        }

    }};


查看完整回答
反對 回復 2021-05-26
  • 2 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號