我的动态列表视图(从webservice填充)有一个AutoCompleteTextView,“搜索”按钮。
我已经为AutoCompleteTextView实现了自动完成功能,它运行正常;当我键入min 2chars时,AutoCompleteTextView显示匹配的结果,当我从填充列表中选择一个项目时,它会自动出现在AutoCompleteTextView中。
没关系,现在我需要为我的“搜索”按钮实现操作,当我点击这个按钮时,主列表视图应该只显示匹配的结果。
如果不再次调用Web服务,最好的方法是什么?
提前致谢。 -nehatha
答案 0 :(得分:4)
最好的Android方式是使用Quick Search Box。基本上,您实现了一个提供程序,以便在游标中返回搜索结果。该光标将用作显示项目列表的源。您可以自定义用户单击项目时要执行的操作。
答案 1 :(得分:0)
这是我的解决方案,点击事件并进入详细显示
public class GinActivityList extends Activity {
private ListView lv;
private EditText et;
private ArrayList<Object> array_sort = new ArrayList<Object>();
int textlength = 0;
private Object[] ginsArray;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ginsArray = (Object[]) General.GINS.values().toArray();
setContentView(R.layout.list_search);
lv = (ListView) findViewById(R.id.ListView01);
et = (EditText) findViewById(R.id.EditText01);
lv.setAdapter(new ArrayAdapter<Object>(this,
android.R.layout.simple_list_item_1, ginsArray));
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Gin ginSelected = (Gin) lv.getAdapter().getItem(position);
Intent intent = new Intent(getParent(), GinActivityDetail.class);
GinActivityGroup parentActivity = (GinActivityGroup) getParent();
Bundle bundle = new Bundle();
bundle.putSerializable("ID_GIN", ginSelected.getId());
intent.putExtras(bundle);
parentActivity.startChildActivity("GinActivityDetail", intent);
}
});
et.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
textlength = et.getText().length();
array_sort.clear();
for (int i = 0; i < ginsArray.length; i++) {
if (textlength <= ((Gin) ginsArray[i]).getName().length()) {
if (et.getText()
.toString()
.equalsIgnoreCase(
(String) ((Gin) ginsArray[i]).getName()
.subSequence(0, textlength))) {
array_sort.add((Gin) ginsArray[i]);
}
}
}
lv.setAdapter(new ArrayAdapter<Object>(GinActivityList.this,
android.R.layout.simple_list_item_1, array_sort));
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
}
list_search.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/EditText01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Buscar" >
</EditText>
<ListView
android:id="@+id/ListView01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="12sp" >
</ListView>