我正在使用mvvm模型。因此,我首先要做的是从改造中获取包含url和其他内容的数据。
第二个是从网址获取图像并在执行第一个过程后通知Viewpager。
我做了第一个。但是当我尝试第二个过程时,发生了错误
我推荐了该网站http://bumptech.github.io/glide/doc/getting-started.html#background-threads
在后台线程上使用滑行。我不必在观察中使用Asynctask来约束开发。我该如何解决第二个过程? 答案 0 :(得分:0) 在Java中简单优雅: 与 答案 1 :(得分:0) 如果要在UI Thread上获取位图,请执行以下操作,您可以尝试java.lang.IllegalArgumentException: You must call this method on a background thread
onCreate
detailViewModel.getIndexItem().observe(this, Observer<DetailModel>(){
t->
binding.item = t
image_list = binding.item.thumbnail_list_320.toString().split("#")
for(image in image_list) {
val futureTarget: FutureTarget<Bitmap> = Glide.with(context)
.asBitmap()
.load(image)
.submit(500, 500)
val bitmap = futureTarget.get()
bitmaps.add(bitmap).apply {
if(this){
viewPagerAdapter.notifyDataSetChanged()
transitionLayout.visibility=View.GONE
detailLayout.visibility=View.VISIBLE
}
}
}
})
2 个答案:
encryptAESKey
Bitmap bitmap;
Glide.with(mContext).load(PHOTOURL).apply(options).listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
bitmap = resource;
}
}).into(IMAGEVIEW);
。请注意,它是异步的,需要一些时间来加载位图。希望对您有所帮助。最好的问候。detailViewModel.getIndexItem().observe(this, Observer<DetailModel>(){
t->
binding.item = t
image_list = binding.item.thumbnail_list_320.toString().split("#")
for(image in image_list) {
Glide.with(this)
.asBitmap()
.override(500, 500)
.load("image url")
.into( object: CustomTarget<Bitmap>() {
override fun onResourceReady(
bitmap: Bitmap,
transition: Transition<in Bitmap>?
) {
// UI Thread
Log.e(TAG, "$bitmap")
bitmaps.add(bitmap).apply {
if(this){
viewPagerAdapter.notifyDataSetChanged()
transitionLayout.visibility=View.GONE
detailLayout.visibility=View.VISIBLE
}
}
}
override fun onLoadCleared(placeholder: Drawable?) {
}
})
}
})