【问题标题】:Android perform real time searchAndroid 执行实时搜索
【发布时间】:2014-06-02 18:31:05
【问题描述】:

我应该这样做,通过在网格视图中显示名称列表,我可以从搜索栏中:

  1. 进行实时搜索(例如谷歌搜索)
  2. 删除不以您键入的字母开头的名称(例如 例如,如果您键入“ja”或“Ja”或“JA”,应用程序会删除所有 列表中的名字,除了“杰克”

我不知道从哪里开始.. 你能帮帮我吗?

这里是 People.java:

package com.ec.people;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.TextView;
import android.widget.Toast;


public class people extends Activity {
    GridView peoplelist;
    EditText search;

    static final String[] numbers = new String[] { 
        "Rossi", "Loggia", "Boni",
        "Milanesi", "Mancini", "Cremonesi",
        "Dali - Colombo", "Fiorentini",
        "Trevisani", "Monaldo", "Udinesi - Pagnotto",
        "Beneventi", "Zucchi", "Calabri",};


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_people);               

        search = (EditText)findViewById(R.id.editText1);            
        peoplelist = (GridView)findViewById(R.id.gridView1);            

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, numbers);
        peoplelist.setAdapter(adapter);

        peoplelist.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                Toast.makeText(getApplicationContext(),
                    ((TextView) v) .getText(), Toast.LENGTH_SHORT) .show();
            }


        });

        // I use this to perform search

                    search.addTextChangedListener(new TextWatcher() {

                        @Override
                        public void onTextChanged(CharSequence s, int start, int before, int count) {




                            for(int i=0; i < numbers.length ; i++)
                            {
                            if(numbers[1].startsWith(s.toString())  )
                            {


                            }
                            }

                            //PerformSearch mysearch  = new PerformSearch();



                        }


                        @Override
                        public void afterTextChanged(Editable s) { }

                        @Override
                        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
                    });

    }
}       

【问题讨论】:

标签: android eclipse list search real-time


【解决方案1】:

您可以通过两种方式实现它:

1) 自动完成文本视图

2 ) 使用 getFilter()

我包括示例和屏幕截图:

1) 自动完成文本视图

你的xml文件activity_main.xml

<RelativeLayout xmlns:androclass="http://schemas.android.com/apk/res/android"  
xmlns:tools="http://schemas.android.com/tools"  
android:layout_width="match_parent"  
android:layout_height="match_parent"  
tools:context=".MainActivity" >  

<TextView  
    android:id="@+id/textView1"  
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:layout_alignParentLeft="true"  
    android:layout_alignParentTop="true"  
    android:layout_marginTop="15dp"  
    android:text="@string/what_is_your_favourite_programming_language_" />  

<AutoCompleteTextView  
    android:id="@+id/autoCompleteTextView1"  
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:layout_alignParentLeft="true"  
    android:layout_below="@+id/textView1"  
    android:layout_marginLeft="36dp"  
    android:layout_marginTop="17dp"  
    android:ems="10"  
    android:text="">  

    <requestFocus />  
</AutoCompleteTextView>  

你的java文件MainActivity.java

    public class MainActivity extends Activity {  
    String[] language ={"C","C++","Java",".NET","iPhone","Android","ASP.NET","PHP"};  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  

        //Creating the instance of ArrayAdapter containing list of language names  
           ArrayAdapter<String> adapter = new ArrayAdapter<String>  
            (this,android.R.layout.select_dialog_item,language);  
        //Getting the instance of AutoCompleteTextView  
           AutoCompleteTextView actv= (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);  
           actv.setThreshold(1);//will start working from first character  
           actv.setAdapter(adapter);//setting the adapter data into the AutoCompleteTextView  
           actv.setTextColor(Color.RED);  

    }  

    @Override  
    public boolean onCreateOptionsMenu(Menu menu) {  
        // Inflate the menu; this adds items to the action bar if it is present.  
        getMenuInflater().inflate(R.menu.activity_main, menu);  
        return true;  
    }  

}  

截图:

2) 使用 getFilter()

我已经回答过了。看here

截图:

【讨论】:

    猜你喜欢
    • 2017-03-21
    • 2014-05-13
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 2014-03-16
    • 1970-01-01
    • 2012-09-08
    相关资源
    最近更新 更多