隐藏数组适配器中的元素,而不是删除它们
Hide elements from Array Adapter, not remove them
我试图从 google 个位置 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()
。
我试图从 google 个位置 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()
。