Android:突出显示使用文本观察器为edittext显示的列表中的某些行

时间:2014-05-06 06:50:43

标签: android adapter textwatcher

我为edittext添加了一个文本监视器,并为其分配了一个自定义适配器,并实现了可过滤的接口。 因此,当我输入edittext时,会弹出一个列表,其中包含匹配的值。它运作良好。 现在在这个列表中,我想基于逻辑突出显示/显示不同颜色的某些行。 逻辑是特定于应用程序的。例如,如果该项目有一个数字,那么该项目是蓝色的。我怎么能这样做。

 adapter = new
     ContactsAutoCompleteAdapter(this,
     android.R.layout.simple_dropdown_item_1line);

    editText.setAdapter(adapter);

我添加了

@Override
    public void addTextChangedListener(TextWatcher watcher) {
        super.addTextChangedListener(watcher);
        adapter.getFilter().filter(watcher.toString());  
    }

适配器是

private class ContactsAutoCompleteAdapter extends ArrayAdapter<String>
        implements Filterable {
    private ArrayList<String> resultList;

    public ContactsAutoCompleteAdapter(Context context,
            int textViewResourceId) {
        super(context, textViewResourceId);
    }

    @Override
    public int getCount() {
        return resultList.size();
    }

    @Override
    public String getItem(int index) {
        return resultList.get(index);
    }

    @Override
    public Filter getFilter() {
        Filter filter = new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence constraint) {
                FilterResults filterResults = new FilterResults();
                if (constraint != null && semp.currentAcct.iProvider == Constants.PROVIDER_EXCHANGE) {
                    // Retrieve the autocomplete results.
                    resultList = autocomplete(constraint.toString()); // this will get the list of items

                    // Assign the data to the FilterResults
                    filterResults.values = resultList;
                    filterResults.count = resultList.size();
                }
                return filterResults;
            }

            @Override
            protected void publishResults(CharSequence constraint,
                    FilterResults results) {
                if (results != null && results.count > 0) {
                    notifyDataSetChanged();
                } else {
                    notifyDataSetInvalidated();
                }
            }
        };
        return filter;
    }
}

请帮助

1 个答案:

答案 0 :(得分:0)

我必须覆盖我的数组适配器的getview并在那里添加逻辑。