在 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) {
}
});
我刚刚创建了用于获取网站数据以显示在列表 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) {
}
});