Я хочу, чтобы фильтр GridView
, но проблема, кажется, в некотором роде, я организую свои данные внутри View
.Пользовательский фильтр для ArrayAdapter в GridView
это код я использую для разметки
private GridView list;
private void loadListView(){
list = (GridView)findViewById(R.id.apps_list);
ArrayAdapter<AppDetail> adapter = new ArrayAdapter<AppDetail>(this, R.layout.list_item, apps) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = getLayoutInflater().inflate(R.layout.list_item, null);
}
ImageView appIcon = (ImageView)convertView.findViewById(R.id.item_app_icon);
appIcon.setImageDrawable(apps.get(position).icon);
appIcon.setTag(apps.get(position).name);
TextView appLabel = (TextView)convertView.findViewById(R.id.item_app_label);
appLabel.setText(apps.get(position).label);
//TextView appName = (TextView)convertView.findViewById(R.id.item_app_name);
//appName.setText(apps.get(position).name);
return convertView;
}
};
list.setAdapter(adapter);
}
, как вы, возможно, поняли, я фильтровать список приложений, установленных на устройстве.
теперь у меня есть метод поиска, определенный в той же деятельности.
private void doMySearch(String query){
}
Здесь мне нужно отфильтровать адаптер с запросом. Когда я попытался повторно инициализировать arrayAdapter
и отфильтровать его с помощью adapter.getFilter().filter(query);
, он не работает.
Что такое способ фильтровать адаптер по атрибуту apps.label
?
использование [это] (https://gist.github.com/pskink/2dd4d17a93caf02ff696533e82f952b0) общий адаптер – pskink
вы можете показать мне случай использования – CBeTJlu4ok
попробовать класс 'MyAdapter расширяет MatchableArrayAdapter {...' и переопределение его методы 'onBind' и' matches' –
pskink