带有textwatcher的android edittext

本文概述

  • 带有TextWatcher()的EditText的示例
Android EditText是TextView的子类。 EditText用于输入和修改文本。使用EditText宽度时,我们必须在EditText的inputType属性中指定其输入类型,该属性根据输入配置键盘。
EditText使用TextWatcher界面来监视对EditText所做的更改。为此,EditText调用addTextChangedListener()方法。
TextWatcher的方法
  1. beforeTextChanged(CharSequence arg0,int arg1,int arg2,int arg3):在对EditText进行任何更改之前执行它。
  2. onTextChanged(CharSequence cs,int arg1,int arg2,int arg3):在对EditText进行任何更改时执行。
  3. afterTextChanged(Editable arg0):在对EditText进行更改后执行。
带有TextWatcher()的EditText的示例在此示例中,我们将使用TextWatcher实现EditText来从ListView中搜索数据。
activity_main.xml
在包含EditText和ListView的布局文件夹中创建一个activity_main.xml文件。
文件:activity_main.xml
< ?xml version="1.0" encoding="utf-8"?> < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.test.searchfromlistview.MainActivity">< EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText" android:inputType="text" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" />< ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/listView" android:layout_below="@+id/editText" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> < /RelativeLayout>

在布局文件夹中创建另一个文件List_item.xml,其中包含ListView的数据。
list_item.xm
文件:list_item.xml
< ?xml version="1.0" encoding="utf-8"?> < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">< TextView android:id="@+id/product_name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dip" android:textSize="16dip" android:textStyle="bold"/> < /LinearLayout>

活动类
活动类
package com.example.test.searchfromlistview; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; import android.support.v7.app.AppCompatActivity; import android.widget.Toast; public class MainActivity extends AppCompatActivity {private ListView lv; private EditText editText; private ArrayAdapter< String> adapter; private String products[] = {"Apple", "Banana", "Pinapple", "Orange", "Papaya", "Melon", "Grapes", "Water Melon", "Lychee", "Guava", "Mango", "Kivi"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.listView); editText = (EditText) findViewById(R.id.editText); adapter = new ArrayAdapter< String>(this, R.layout.list_item, R.id.product_name, products); lv.setAdapter(adapter); editText.addTextChangedListener(new TextWatcher() {@Override public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { adapter.getFilter().filter(cs); }@Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { Toast.makeText(getApplicationContext(), "before text change", Toast.LENGTH_LONG).show(); }@Override public void afterTextChanged(Editable arg0) { Toast.makeText(getApplicationContext(), "after text change", Toast.LENGTH_LONG).show(); } }); } }

【带有textwatcher的android edittext】输出量
带有textwatcher的android edittext

文章图片
带有textwatcher的android edittext

文章图片

    推荐阅读