-
Notifications
You must be signed in to change notification settings - Fork 93
2. 过滤器:只显示某种类型的文件
rosuH edited this page Jun 28, 2020
·
5 revisions
如果你想实现只显示图片、视频、音频之类的文件的话,只需要很简单的一部:实现过滤器。
// in kotlin
val aFilter = object : AbstractFileFilter() {
override fun doFilter(listData: ArrayList<FileItemBeanImpl>): ArrayList<FileItemBeanImpl> {
return ArrayList(listData.filter { item ->
// 文件夹或是图片,则被滤出来,然后新建一个 ArrayList 返回给调用者即可
((item.isDir) || (item.fileType is RasterImageFileType))
})
}}// in Java
AbstractFileFilter aFilter = new AbstractFileFilter() {
@NotNull
@Override
public ArrayList<FileItemBeanImpl> doFilter(@NotNull final ArrayList<FileItemBeanImpl> arrayList) {
ArrayList<FileItemBeanImpl> fileItemBeans = new ArrayList<>();
for (FileItemBeanImpl fileItemBean : arrayList){
if (fileItemBean.isChecked() || fileItemBean.getFileType() instanceof RasterImageFileType){
fileItemBeans.add(fileItemBean);
}
}
return fileItemBeans;
}
};然后你只需要轻轻地加进去,一切就搞定了。
FilePickerManager
.from(this@SampleActivity)
.filter(aFilter)
.forResult(FilePickerManager.REQUEST_CODE)实际上你可以发挥你的想象力,filter的工作原理就是,把一个纯净的数据集发给你,你搞一些事情后再把它传回去。
所以理论上你可以做一切你想做的事情。
为了让本框架易于被改装,你实际上可以实现你自己的文件类型,和文件甄别器。看看自定义文件类型和检测器。
If you need an English translation or other localized content, please crate an issue immediately or initiate a pull request.