06
2014
08

Android开发学习:AutoCompleteTextView控件实现搜索历史记录提示

Android开发学习

Android开发中,自动显示搜索历史成列表

新建布局文件:activity_two.xml,使用AutoCompleteTextView自动关联,下面介绍实现搜索历史记录提示实例,代码内容:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >

    <TextView

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="@string/hello_world" />


    <LinearLayout

        android:layout_width="0px"

        android:layout_height="0px"

        android:focusable="true"

        android:focusableInTouchMode="true" >

    </LinearLayout>

    <AutoCompleteTextView

        android:id="@+id/autoCompleteTextView1"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:hint="请输入文字进行搜索" >

    </AutoCompleteTextView>

    <Button

        android:id="@+id/button1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="搜索" >

    </Button>

</LinearLayout>

实现的TwoActivity.java代码如下:

package com.zhengdecai.autocomplete;


import android.app.Activity;

import android.content.SharedPreferences;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.View.OnFocusChangeListener;

import android.widget.ArrayAdapter;

import android.widget.AutoCompleteTextView;

import android.widget.Button;


/**

 * 自动显示搜索历史成列表:实现搜索历史记录提示

 * 

 * @author 郑德才

 *

 */

public class TwoActivity extends Activity implements OnClickListener {

private AutoCompleteTextView autoTv;


/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_two);

autoTv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);

initAutoComplete("history", autoTv);

Button search = (Button) findViewById(R.id.button1);

search.setOnClickListener(this);

}


@Override

public void onClick(View v) {

// 这里可以设定:当搜索成功时,才执行保存操作

saveHistory("history", autoTv);

}


/**

* 初始化AutoCompleteTextView,最多显示5项提示,使 AutoCompleteTextView在一开始获得焦点时自动提示

* @param field

*            保存在sharedPreference中的字段名

* @param auto

*            要操作的AutoCompleteTextView

*/

private void initAutoComplete(String field, AutoCompleteTextView auto) {

SharedPreferences sp = getSharedPreferences("network_url", 0);

String longhistory = sp.getString("history", "nothing");

String[] hisArrays = longhistory.split(",");

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,

android.R.layout.simple_dropdown_item_1line, hisArrays);

// 只保留最近的50条的记录

if (hisArrays.length > 50) {

String[] newArrays = new String[50];

System.arraycopy(hisArrays, 0, newArrays, 0, 50);

adapter = new ArrayAdapter<String>(this,

android.R.layout.simple_dropdown_item_1line, newArrays);

}

auto.setAdapter(adapter);

auto.setDropDownHeight(350);

auto.setThreshold(1);

auto.setCompletionHint("最近的5条记录");

auto.setOnFocusChangeListener(new OnFocusChangeListener() {

@Override

public void onFocusChange(View v, boolean hasFocus) {

AutoCompleteTextView view = (AutoCompleteTextView) v;

if (hasFocus) {

view.showDropDown();

}

}

});

}


/**

* 把指定AutoCompleteTextView中内容保存到sharedPreference中指定的字符段

* @param field

*            保存在sharedPreference中的字段名

* @param auto

*            要操作的AutoCompleteTextView

*/

private void saveHistory(String field, AutoCompleteTextView auto) {

String text = auto.getText().toString();

SharedPreferences sp = getSharedPreferences("network_url", 0);

String longhistory = sp.getString(field, "nothing");

if (!longhistory.contains(text + ",")) {

StringBuilder sb = new StringBuilder(longhistory);

sb.insert(0, text + ",");

sp.edit().putString("history", sb.toString()).commit();

}

}

}

模拟器运行效果:



« 上一篇下一篇 »

评论列表:

1.定量包装秤  2014/8/11 17:29:52 回复该留言
打一个小广告 要买定量包装秤的请点我~~
2.定量包装秤  2014/8/12 15:56:24 回复该留言
打个小广告,有需要了解包装秤的可以点我一下!
3.定量包装秤  2014/8/14 14:05:08 回复该留言
你大舅你二舅都是你舅!
高桌子低板凳都是木头!
金疙瘩银疙瘩你还不够!
天在上地在下你娃包牛!
4.偏方网  2014/8/15 23:37:58 回复该留言
博主码字那么难,支持一下好了。
5.惜乐博客  2014/8/17 15:23:47 回复该留言
很不错 感谢分享 我不懂这些哈

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。