繁体   English   中英

具有搜索功能的Android列表视图

[英]Android list view with search functionality

我的动态列表视图(从webservice填充)有一个AutoCompleteTextView,“搜索”按钮。

我已经为AutoCompleteTextView实现了自动完成功能,它工作正常; 当我输入min 2chars时,AutoCompleteTextView显示匹配的结果,当我从填充的列表中选择一个项目时,它会自动出现在AutoCompleteTextView中。

这很好,现在我需要为我的“搜索”按钮实现操作,当我点击这个按钮时,主列表视图应该只显示匹配的结果。

没有再次调用Web服务,最好的方法是什么?

提前致谢。 -nehatha

最好的Android方式是使用快速搜索框 基本上,您实现了一个提供程序,以便在游标中返回搜索结果。 该光标将用作显示项目列表的源。 您可以自定义用户单击项目时要执行的操作。

这是我的点击事件解决方案,并转到详细信息显示

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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM