实现类似Android联系人搜索功能
生活随笔
收集整理的這篇文章主要介紹了
实现类似Android联系人搜索功能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1》效果如下:
執行搜索:
2》布局文件如下:
res/layout/main_activity.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity"><EditTextandroid:id="@+id/search_et"android:hint="@string/search_et_hint"android:layout_width="match_parent"android:layout_height="wrap_content" /><ListViewandroid:id="@+id/content_lv"android:layout_width="match_parent"android:layout_height="wrap_content"></ListView></LinearLayout>3》MainActivity.java package com.sohu.cxc.edittextsearchdemo;import android.os.Message; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView;import java.util.ArrayList; import java.util.logging.Handler;public class MainActivity extends ActionBarActivity {private static final String TAG = "MainActivity";//聲明控件private EditText search_et;private ListView content_lv;//ListView 中要填充的數據private String[] listItemValues = {"Java", "JavaSE", "JavaEE", "Oracle 8","Oracle 9i", "Oracle 10g"};private ArrayAdapter<String> listViewAdapter;private android.os.Handler myHandler;private static final int MSG_SINGAL = 1001;private static final String MSG_KEY = "MainActivity.MSG_KEY";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initViews();}//初始化控件、變量并對注冊相應的事件private void initViews() {search_et = (EditText) findViewById(R.id.search_et);content_lv = (ListView) findViewById(R.id.content_lv);//注冊事件search_et.addTextChangedListener(new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {Message msg = new Message();msg.what = MSG_SINGAL;Bundle data = new Bundle();data.putString(MSG_KEY, s.toString());msg.setData(data);myHandler.sendMessage(msg);Log.d(TAG, "----send:" + s.toString());}@Overridepublic void afterTextChanged(Editable s) {}});listViewAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItemValues);//注冊Adaptercontent_lv.setAdapter(listViewAdapter);//handlermyHandler = new android.os.Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case MSG_SINGAL://todorefreshListView(msg.getData().getString(MSG_KEY));break;default:break;}}};}//根據搜索字符(串)更新ListView顯示數據private void refreshListView(String searchString) {Log.d(TAG, "+++++++get:" + searchString);if (searchString == null || searchString.trim().length() == 0) {//搜索字符串為空時,顯示全部listViewAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, listItemValues);content_lv.setAdapter(listViewAdapter);}ArrayList<String> tmpList = new ArrayList<String>();for (String s : listItemValues) {if (s.toLowerCase().contains(searchString.toLowerCase())) {//ListView 數據項中包含搜索字符串(不區分字符大小)tmpList.add(s);}}/*if (tmpList.size() == 0)return;*/listViewAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, tmpList);content_lv.setAdapter(listViewAdapter);content_lv.invalidateViews();} }
總結
以上是生活随笔為你收集整理的实现类似Android联系人搜索功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 4.0新增Space及G
- 下一篇: 查看android数据库sqlite3中