在 android 应用的列表视图中搜索

search in list view in android app

我刚刚创建了用于获取网站数据以显示在列表 view.at 中的应用程序,同时用户使用在 android 中输入 editText 中的文本来搜索数据 我的 xml 文件显示在这里

<EditText
        android:layout_width="180px"
        android:layout_height="75px"
        android:drawableLeft="@android:drawable/ic_menu_search"
        android:background="@color/thick"
        android:id="@+id/filterText"
        android:hint="Filter Items.."
        android:inputType="textAutoComplete"
        android:textColor="#fffff0"
        android:layout_below="@+id/radioTym"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:gravity="fill_vertical"
        />

    <Button
        android:id="@+id/btnData"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="KNOW YOUR AREA"
        android:textColor="#ffffff"
        android:background="#444549"
        android:layout_below="@+id/filterText"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listShow"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/btnData" />

我的 java 代码在这里

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_primary);
    filterItems=(EditText)findViewById(R.id.filterText);
    filterItems.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
            PrimaryActivity.this.arrayAdapter.getFilter().filter(charSequence);

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {

        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    });

这里是我的阵列适配器

ArrayAdapter<String> arrayAdapter;

    @Override
    protected void onPostExecute(String[] result) {
        // Set title into TextView
        //TextView txttitle = (TextView) findViewById(R.id.txtData);
        //txttitle.setMovementMethod(new ScrollingMovementMethod());
        //txttitle.setText(listValue);
        ListView list=(ListView)findViewById(R.id.listShow);
        arrayAdapter=new ArrayAdapter<String>(getBaseContext(),android.R.layout.simple_list_item_1,result);
        list.setAdapter(arrayAdapter);
        mProgressDialog.dismiss();
    }
}

我无法使用 beforeTextChanged 中的阵列适配器 method.How 我可以访问它吗?

您只需在 activity 开始时声明数组适配器。

public class PrimaryActivity extends Activity {
    ArrayAdapter<String> arrayAdapter;
}
filterItems=(EditText)findViewById(R.id.filterText);
    filterItems.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
            PrimaryActivity.this.arrayAdapter.getFilter().filter(charSequence);

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {

        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    });