【问题标题】:Android : Highlight some rows in the list displayed with text watcher for edittextAndroid:突出显示列表中的某些行,其中包含用于edittext的文本观察器
【发布时间】:2014-05-06 06:50:43
【问题描述】:

我为我的 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;
    }
}

请帮忙

【问题讨论】:

  • 根据逻辑用不同颜色显示某些行???你的意思是什么逻辑?
  • 将 spannableString 用于可过滤界面的文本视图
  • 逻辑是特定于应用程序的,例如字符串是国家/地区。
  • @illegalargument,你能解释一下怎么做吗?即使用 spannableString

标签: android adapter textwatcher


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 2013-10-18
    • 2023-04-04
    相关资源
    最近更新 更多