如何在自定义下载器中使用glide

克拉夫兹

我想使用Glide从Nextcloud服务器下载图片并将其加载到ImageView中。Nextcloud提供了一个自己的库,用于与nextcloud服务器连接并下载数据。标准通话:

Glide.with(mContext)
   .load(new File(path))
   .into(holder.mImagePreview);

无法使用,因为文件网址位于nextcloud服务器的身份验证后面。

如何将自己的下载逻辑传递给Glide,以便可以使用nextcloud库从nextcloud服务器下载图片?

梅迪·亚里(Mehdi Yari)

您需要为Glide编写定制的Model Loader。本节介绍如何编写自定义模型加载器


class FileDataFetcher(
        private val model: File
) : DataFetcher<ByteBuffer> {
    override fun getDataClass(): Class<ByteBuffer> = ByteBuffer::class.java

    override fun cleanup() {
        TODO("cleanup data fetcher | run on background thread")
    }

    override fun getDataSource(): DataSource {
        TODO("return DataSource.LOCAL or DataSource.LOCAL OR DataSource.MEMORY_CACHE or DataSource.REMOTE based on your need")
    }

    override fun cancel() {
        TODO("cancel download request | run on main thread")
    }

    override fun loadData(priority: Priority, callback: DataFetcher.DataCallback<in ByteBuffer>) {
        TODO("start download or load in external storage | run on background thread")
    }
}
class FileModelLoader : ModelLoader<File, ByteBuffer> {

    override fun buildLoadData(model: File, width: Int, height: Int, options: Options): ModelLoader.LoadData<ByteBuffer>? =
            ModelLoader.LoadData(ObjectKey(model), FileDataFetcher(model))

    override fun handles(model: File): Boolean = model.exists()
}

class FileModelLoaderFactory : ModelLoaderFactory<File, ByteBuffer> {

    override fun build(multiFactory: MultiModelLoaderFactory): ModelLoader<File, ByteBuffer> = FileModelLoader()

    override fun teardown() = Unit
}
@GlideModule
class GlideAppModule : AppGlideModule() {
    override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
        registry.prepend(File::class.java, ByteBuffer::class.java, FileModelLoaderFactory())
        super.registerComponents(context, glide, registry)
    }
}

当您File使用Glide加载

Glide.with(mContext)
   .load(new File(path))
   .into(holder.mImagePreview);

Glide称您的模型加载器

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在ListView中使用自定义单元格下载fxml?

来自分类Dev

如何在Highcharts中使用具有默认打印选项的自定义下载按钮?

来自分类Dev

如何在 WordPress 中使用 PHP headers() 从我的自定义插件页面下载文件?

来自分类Dev

如何在PCollection <KV <String,B >>中使用自定义编码器?

来自分类Dev

如何在Gradle中使用自定义Java注释处理器?

来自分类Dev

如何在自定义约束验证器中使用注释元素

来自分类Dev

如何在Dart中使用Angular2实现自定义验证器?

来自分类Dev

如何在BTreeSet中使用自定义比较器函数?

来自分类Dev

如何在Ember CLI中使用自定义Express服务器?

来自分类Dev

如何在反向关系中使用自定义管理器?

来自分类Dev

如何在ElasticSearch中使用自定义分析器?

来自分类Dev

如何在Twig中使用我的php(自定义控制器?)

来自分类Dev

如何在Buck中使用自定义注释处理器?

来自分类Dev

如何在Bot框架中使用自定义身份验证服务器?

来自分类Dev

如何在Spring OAuth2资源服务器中使用自定义UserDetailService?

来自分类Dev

如何在自定义装饰器中使用NestJS Reflector?

来自分类Dev

如何在控制器中的Laravel中使用自定义防护登录用户

来自分类Dev

如何在C ++中使用自定义比较器创建std :: set?

来自分类Dev

如何在Ember CLI中使用自定义Express服务器?

来自分类Dev

如何在ElasticSearch中使用自定义分析器?

来自分类Dev

如何在Microsoft VBA编辑器中使用自定义颜色?

来自分类Dev

如何在自定义约束验证器中使用注释元素

来自分类Dev

如何在Android中使用图片,文字创建自定义微调器?

来自分类Dev

如何在ASP.NET MVC中的控制器中使用自定义方法

来自分类Dev

如何在Wildfly中使用自定义系统属性解析器

来自分类Dev

如何在Xamarin共享项目中使用自定义渲染器

来自分类Dev

如何在 jar 文件中使用 Tika 自定义解析器?

来自分类Dev

如何在自定义验证器中使用可注入服务

来自分类Dev

如何在 sklearn 中使用自定义估计器进行交叉验证?

Related 相关文章

  1. 1

    如何在ListView中使用自定义单元格下载fxml?

  2. 2

    如何在Highcharts中使用具有默认打印选项的自定义下载按钮?

  3. 3

    如何在 WordPress 中使用 PHP headers() 从我的自定义插件页面下载文件?

  4. 4

    如何在PCollection <KV <String,B >>中使用自定义编码器?

  5. 5

    如何在Gradle中使用自定义Java注释处理器?

  6. 6

    如何在自定义约束验证器中使用注释元素

  7. 7

    如何在Dart中使用Angular2实现自定义验证器?

  8. 8

    如何在BTreeSet中使用自定义比较器函数?

  9. 9

    如何在Ember CLI中使用自定义Express服务器?

  10. 10

    如何在反向关系中使用自定义管理器?

  11. 11

    如何在ElasticSearch中使用自定义分析器?

  12. 12

    如何在Twig中使用我的php(自定义控制器?)

  13. 13

    如何在Buck中使用自定义注释处理器?

  14. 14

    如何在Bot框架中使用自定义身份验证服务器?

  15. 15

    如何在Spring OAuth2资源服务器中使用自定义UserDetailService?

  16. 16

    如何在自定义装饰器中使用NestJS Reflector?

  17. 17

    如何在控制器中的Laravel中使用自定义防护登录用户

  18. 18

    如何在C ++中使用自定义比较器创建std :: set?

  19. 19

    如何在Ember CLI中使用自定义Express服务器?

  20. 20

    如何在ElasticSearch中使用自定义分析器?

  21. 21

    如何在Microsoft VBA编辑器中使用自定义颜色?

  22. 22

    如何在自定义约束验证器中使用注释元素

  23. 23

    如何在Android中使用图片,文字创建自定义微调器?

  24. 24

    如何在ASP.NET MVC中的控制器中使用自定义方法

  25. 25

    如何在Wildfly中使用自定义系统属性解析器

  26. 26

    如何在Xamarin共享项目中使用自定义渲染器

  27. 27

    如何在 jar 文件中使用 Tika 自定义解析器?

  28. 28

    如何在自定义验证器中使用可注入服务

  29. 29

    如何在 sklearn 中使用自定义估计器进行交叉验证?

热门标签

归档