rxjava处理observable中的回调

时间:2018-01-12 07:49:29

标签: android android-recyclerview rx-java recycler-adapter rx-android

我有一个简单的回收站视图,其中包含一个自定义的ImageGLSurfaceView,其中显示了一个位图。如果我有一个简单的imageview,我会很容易地使用(毕加索或滑翔等)。但我有ImageGLSurfaceView所以我想做的是模仿ImageLoader lib类。所以我有ImageLoader类,它有loadImage方法,我从recycleler视图的适配器调用,我在hashmap中缓存/存储ImageGLSurfaceView对象,并像下面一样处理它:

public void loadImage(final FilteredImage filteredImage, final ImageGLSurfaceView imageView) {
    if(images.containsKey(filteredImage)) {
        images.get(filteredImage).setImageBitmap(filteredImage.getBitmap());
        images.get(filteredImage).setFilterWithConfig(filteredImage.getFilter());
    } else {
        images.put(filteredImage, imageView);
        imageView.setSurfaceCreatedCallback(new ImageGLSurfaceView.OnSurfaceCreatedCallback() {
            @Override
            public void surfaceCreated() {
                imageView.setImageBitmap(filteredImage.getBitmap());
                imageView.setFilterWithConfig(filteredImage.getFilter());
            }
        });
    }
}

但是列表很慢或我认为它是在列表滚动上再次重新创建ImageGLSurfaceView对象。或者我应该将surfaceCreatedCallback放在后台线程上。所以我决定将RxJava用于此目的。我想订阅要创建的ImageGLSurfaceView,一旦创建它,​​然后设置Image位图,不要再创建ImageGLSurfaceView。如果这是实现这一目标的正确方法,请指导我?或者我应该彻底改变代码吗?

0 个答案:

没有答案