Android AutoCompleteTextView 实现历史记录提示
来源:互联网 发布:模拟人生4网络股票 编辑:程序博客网 时间:2024/05/25 23:57
package com.stkj.ydzf.view;import java.util.HashSet;import java.util.Iterator;import android.content.Context;import android.content.SharedPreferences;import android.util.AttributeSet;import android.widget.ArrayAdapter;import android.widget.AutoCompleteTextView;/** * @author gqs * @date 2013-11-18 上午10:08:59 * @descripton : 该方法只支持 4.0以上 一下版本 可选用数据库存储或其他方式 * */public class MyAutoCompleteView extends AutoCompleteTextView {private final String KEY_HISTORY = "history";private final int MAX_HISTORY = 50;private Context context;SharedPreferences sp;public MyAutoCompleteView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);this.context = context;sp = context.getSharedPreferences(KEY_HISTORY, 0);}public MyAutoCompleteView(Context context, AttributeSet attrs) {super(context, attrs);this.context = context;sp = context.getSharedPreferences(KEY_HISTORY, 0);}public MyAutoCompleteView(Context context) {super(context);this.context = context;sp = context.getSharedPreferences(KEY_HISTORY, 0);}public void saveHistory(ArrayAdapter<String> adapter) {String addText = getText().toString();if (addText == null || "".equals(addText)) {return;}HashSet<String> set = (HashSet<String>) context.getSharedPreferences(KEY_HISTORY, 0).getStringSet(KEY_HISTORY, null);if (set == null) {set = new HashSet<String>();}set.add(addText);//如果历史记录大于最大记录条数if (set.size() > MAX_HISTORY) {int size = set.size();Iterator ite = set.iterator();while (ite.hasNext() && set.size() > MAX_HISTORY) {set.remove(ite.next());}// for (int i = 0, l = size - MAX_HISTORY; i < l; i++) {// set.remove(i);// }sp.edit().putStringSet(KEY_HISTORY, set).commit();if (adapter != null) {adapter.add(addText);adapter.notifyDataSetChanged();}}}public void copyHistory(ArrayAdapter<String> adapter) {HashSet<String> set = (HashSet<String>) context.getSharedPreferences(KEY_HISTORY, 0).getStringSet(KEY_HISTORY, null);if (set != null)for (String str : set) {adapter.add(str);}}}
新建item_layout
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left" > <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/tv" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="删除" /> </FrameLayout>
控件使用
import android.os.Bundle; import android.app.Activity; import android.view.Menu; 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; public class MainActivity extends Activity { private Button btnSave; private MyAutoCompleteView myacView; ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myacView = (MyAutoCompleteView)findViewById(R.id.myautoView); final ArrayAdapter<String> adapter= new ArrayAdapter<String>(this,R.layout.item_layout,R.id.tv); myacView.copyHistory(adapter); myacView.setAdapter(adapter); btnSave = (Button)findViewById(R.id.btnSave); btnSave.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { myacView.saveHistory(adapter); } }); } }
将ArrayAdapter 该为 BaseAdapter 即可实现类型QQ账号输入框样式- Android AutoCompleteTextView 实现历史记录提示
- Android:AutoCompleteTextView实现历史记录提示
- AutoCompleteTextView实现历史记录提示
- Android用AutoCompleteTextView实现搜索历史记录提示
- Android AutoCompleteTextView实现历史记录
- 用AutoCompleteTextView实现历史记录提示
- 用AutoCompleteTextView实现历史记录提示
- 用AutoCompleteTextView实现历史记录提示 .
- 用AutoCompleteTextView实现历史记录提示
- 用AutoCompleteTextView实现历史记录提示
- 用AutoCompleteTextView实现历史记录提示
- 用AutoCompleteTextView实现历史记录提示
- 用AutoCompleteTextView实现历史记录提示
- 用AutoCompleteTextView实现历史记录提示
- 用AutoCompleteTextView实现历史记录提示
- 用AutoCompleteTextView实现历史记录提示
- 用AutoCompleteTextView实现历史记录提示
- 用AutoCompleteTextView实现历史记录提示
- hack工具大全
- iOS与设计模式五:模版方法模式
- 关于Delphi xe5 firemonkey 手机屏幕自适应程序问题
- 父类析构函数为非虚函数,子类为虚函数
- jquery mobile 中文资料 http://www.lampweb.org/jquerymobile/
- Android AutoCompleteTextView 实现历史记录提示
- VC中CFileDialog的基本操作
- Struts的标签和Struts的OGNL表达式(三)
- STL源码剖析:class template中拥有static data members
- kill -9
- DavinciDM6467T周期产生SPS/PPS、IDR帧
- 关于eclipse 显示行号
- linux下apache重启&&无法启用
- 黑马程序员_类