自定义AutoCompleteTextView

网上找到的都是同ArrayAdapter一起使用的,有时候需要自定义风格,咋办?follow me!


看上图,实现了清空输入框内容和删除Item功能。

其实使用AutoCompleteTextView就得实现过滤器Filterable,你得告诉它怎么过滤。由于ArrayAdapter已经帮我们实现了Filterable接口,所以我们很容易忽略这个,以为AutoCompleteTextView用起来很简单。如果你使用的是BaseAdapter呢?当然,事实上也不难,只要让它也实现Filterable接口就可以了。

下面是源码:
实现自定义的Adapter

import java.util.ArrayList;
import java.util.List;

import qianlong.qlmobile.tablet.csco.R;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.TextView;

public class AutoCompleteAdapter extends BaseAdapter implements Filterable{
	private Context context;
	private ArrayFilter mFilter;
	private ArrayList<String> mOriginalValues;//所有的Item
	private List<String> mObjects;//过滤后的item
	private final Object mLock = new Object();
	private int maxMatch=10;//最多显示多少个选项,负数表示全部
	public AutoCompleteAdapter(Context context,ArrayList<String> mOriginalValues,int maxMatch){
		this.context=context;
		this.mOriginalValues=mOriginalValues;
		this.maxMatch=maxMatch;
	}
	
	@Override
	public Filter getFilter() {
		// TODO Auto-generated method stub
		if (mFilter == null) {  
            mFilter = new ArrayFilter();  
        }  
        return mFilter;
	}
	
	private class ArrayFilter extends Filter {

		@Override
		protected FilterResults performFiltering(CharSequence prefix) {
			// TODO Auto-generated method stub
			FilterResults results = new FilterResults();  
			  
//			if (mOriginalValues == null) {  
//                synchronized (mLock) {  
//                    mOriginalValues = new ArrayList<String>(mObjects);//  
//                }  
//            }
			
            if (prefix == null || prefix.length() == 0) {  
                synchronized (mLock) {
                	Log.i("tag", 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值