java - 隐藏数组适配器中的元素,而不是删除它们

标签 java android android-arrayadapter google-places-api

我试图从 google places api 隐藏我的 AutoCompleteTextView 数组适配器中的一些元素。更具体地说,我想隐藏元素 position%2==0。我在堆栈溢出中找到了一些答案,建议在 getView 中这样做:

@Override
public View getView(int position, View view, ViewGroup parent) {
    if(position%2==0) {
        //something to do here
    }
    return view;
}

但是我不知道在评论区要做什么。

完整代码如下:

class GooglePlacesAutocompleteAdapter extends ArrayAdapter implements Filterable {
    private ArrayList resultList;

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

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

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

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        if(position%2==0) {
            //view.setVisibility() maybe?
        }
        return view;
    }

    @Override
    public Filter getFilter() {
        Filter filter = new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence constraint) {
                FilterResults filterResults = new FilterResults();
                if (constraint != null) {
                    // Retrieve the autocomplete results.
                    resultList = autocomplete(constraint.toString());
                    // Assign the data to the FilterResults
                    filterResults.values = resultList;
                    filterResults.count = resultList.size();
                }
                return filterResults;
            }

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

最佳答案

getCount()getItem() 中执行:

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

@Override
public Object getItem(int index) {
    return resultList.get(index * 2 + 1);
}

只需确保在 getView() 中使用 getItem()

关于java - 隐藏数组适配器中的元素,而不是删除它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36754157/

相关文章:

java - 如何在IDE中每次运行Eclipse Java项目时删除特定文件?

java - 将 byte[] 设置为 SQL 准备语句

android - 拖动后如何将布局恢复到其在android中的原始位置

python - buildozer 版本需要支持 AAB(Android App Bundle)的 python-for-android 版本

android - Listview 中的 Textview 文本颜色

java - 如何在 Netbeans 平台中启用/禁用操作

java - sql表结构来存储html选择数据

java - Android 应用程序和 Spring Rest 服务之间的 httpost 字符编码问题

java - Android自定义arrayadapter构造函数问题

java - CustomArrayAdapter android 空指针异常