Я искал везде, но решение не работает.
Я пытаюсь отфильтровать адаптер «appsAdapter» с помощью метода:
appsAdapter.getFilter().filter();
Это применяется к ListView в MainActivity.
Это мой адаптер:
class AppsAdapter extends BaseAdapter implements Filterable{
private Context mContext;
private List<Pair<String, List<String>>> mAppsWithPermission;
private ArrayFilter mFilter;
AppsAdapter(Context context, List<Pair<String, List<String>>> appsWithPermission) {
mContext = context;
mAppsWithPermission = appsWithPermission;
}
static class ViewHolder {
TextView appName;
}
@Override
public int getCount() {
return mAppsWithPermission.size();
}
@Override
public Object getItem(int position) {
return mAppsWithPermission.get(position);
}
@Override
public long getItemId(int position) {
return mAppsWithPermission.get(position).hashCode();
}
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false);
holder = new ViewHolder();
holder.appName = convertView.findViewById(R.id.list_item_appname);
} else {
holder = (ViewHolder) convertView.getTag();
}
final Pair<String, List<String>> item = mAppsWithPermission.get(position);
final PackageManager packageManager = mContext.getPackageManager();
String name = null;
try {
name = (String) packageManager.getApplicationLabel(packageManager.getApplicationInfo(item.first, PackageManager.GET_META_DATA));
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
public Filter getFilter() {
// TODO Auto-generated method stub
if (mFilter == null) {
mFilter = new ArrayFilter();
}
return mFilter;
}
return convertView;
}
private class ArrayFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
//?
return null;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
//?
}
}
}
Я хочу отфильтровать имена.
Как я уже сказал, я перепробовал все, но, похоже, ничего не работает, поэтому, пожалуйста, не помечайте это как «дубликат».
Заранее спасибо за помощь,
С уважением,
Фаби
Кажется, ничего не работает, потому что я пробовал копировать из других вопросов и затем адаптироваться, но у меня никто не работал
Если вам нужно, я могу дать вам код, который не работает