按下键后如何获取编辑文本的文本

Posted

技术标签:

【中文标题】按下键后如何获取编辑文本的文本【英文标题】:how to get the text of a edit text when after pressing a key 【发布时间】:2015-04-22 14:05:27 【问题描述】:

当用户在 EditText 中键入文本时,我想搜索 ListView。按下一个键后,我需要获取输入的文本部分才能开始搜索。那么有什么我可以使用的方法吗?非常感谢简单的帮助。

【问题讨论】:

【参考方案1】:

如果您使用ArrayAdapter 来填充您的ListView,那么可以这样操作:

   edittext.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) 

            yourAdapter.getFilter().filter(s);
    

    @Override
    public void afterTextChanged(Editable s) 

    
);

TextWatch 添加到您的EditText 并在您的适配器中使用filter 以显示匹配的结果。要突出显示匹配的结果,您可能需要使用SpannableString 来“美化”它。

来自ArrayAdapter.getFilter():

返回一个过滤器,可用于通过过滤模式约束数据。

此方法通常由 Adapter 类实现。

【讨论】:

【参考方案2】:

你可以在你的activity中实现TextWatcher,看看:

http://developer.android.com/reference/android/text/TextWatcher.html

【讨论】:

【参考方案3】:

假设你有一个视图 xml

<EditText
  android:id="@+id/search"
  android:layout_
  android:layout_
  android:inputType="text"
  android:imeOptions="actionSend" />

您在控制器中的代码将是

  final EditText searchField = (ListView)result.findViewById(R.id.search);;
  searchField.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) 
          //do search is the method where you will delegate the search process.
          doSearch(searchField.getText().toString());
      
  );

【讨论】:

【参考方案4】:

你必须为你的编辑文本设置一个 TextWatcher

edittext.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) 
             String newText = s.toString();
        
    );

【讨论】:

以上是关于按下键后如何获取编辑文本的文本的主要内容,如果未能解决你的问题,请参考以下文章

如何从文本字段中获取值并读取按键事件

javaScript 中如何实现 随意按下一个键 ,然后返回按下键上面对应的字符

如何从summernote编辑器获取纯文本?

如何获取设备主要 Gmail id 以编辑文本字段 [重复]

JS / Canvas - 如何仅在按下键时更新 draw() 函数?

如何从 StackView 内的 UITextfield 获取文本