当用户信息来自rx中的BehaviorSubject时,Glide不显示用户图像

时间:2018-04-06 15:15:25

标签: android rx-java2 android-glide

我有用户插入用户名和密码的登录活动。用户登录后,客户收到的所有用户信息存储在领域数据库中。在mainActivity中读取这些信息,滑动图像用户显示在ImageView.User图像中是字节数组:我使用的是MVP设计模式:

private void loadProfileUserImage() {
        RequestOptions requestOptions = new RequestOptions();
        requestOptions.placeholder(R.drawable.shadow);
        requestOptions.circleCropTransform();
        requestOptions.transforms(new CenterCrop(), new RoundedCorners(300));
        Glide.with(view.getContext())
                .load(userInfo.getUserImage())
                .apply(requestOptions)
                .into(view.getProfilePic());
    }

一切都很好,图像用户显示在imageView.IN mainActivity我有一个卡片视图。当用户点击我的卡时,所有用户信息都通过rx和intent发送给UserInfoActivity。我正在使用BehaviorSubject发送用户信息:

view.getCard1().setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        RxBus.getSubject().onNext(userInfo);
        activity.startActivity(new Intent(activity,UserInfoActivity.class));
    }
});

UserInfoPresenter我想向用户显示所有用户信息。我在UserInfo布局中创建了图像视图:

<ImageView
    android:id="@+id/iv_user_profile"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_gravity="center"
    android:layout_marginTop="32dp"
    android:scaleType="centerCrop" />

在getSubject的UserInfopresenter中,我获取了用户信息,最后我想通过glid显示用户图像。但没有任何事情发生,glid:userInfo声明为字段的用户图像不显示。

userInfo = new User();
compositeDisposable.add(
        MainPresenter.RxBus.getSubject()
        .subscribeWith(new DisposableObserver<User>() {
            @Override
            public void onNext(User o) {
                userInfo = o;
                loadProfileUserImage();
            }...

和loadProfile方法:

private void loadProfileUserImage() {
    RequestOptions requestOptions = new RequestOptions();
    requestOptions.placeholder(R.drawable.shadow);
    requestOptions.circleCropTransform();
    requestOptions.transforms(new CenterCrop(), new RoundedCorners(300));
    Glide.with(view.getContext())
            .load(userInfo.getUserImage())
            .apply(requestOptions)
            .into(view.getProfilePic());
}

我没有收到任何错误,甚至在imageView中也没有显示placeholder drawable!就像glid不存在而且它不起作用。我把brakepoint用于debugin以确保在这部分中接收正确的User object

@Override
public void onNext(User o) {
      userInfo = o;
      loadProfileUserImage();
}

用户完全收到,我可以在调试模式下看到用户图像字节数组。

发生了什么,你的想法是什么?

*****************编辑** *******************

调试模式图像:

{{3}}

1 个答案:

答案 0 :(得分:0)

我终于找到了,我的问题在哪里。 我正在使用dagger注入依赖项,并在我的注释构造函数中注入了UserInfoView

@Inject
public UserInfoView(Activity activity) {
    super(activity);
    this.activity = activity;

以这种方式看似右视图没有注入到演示者类中,因为我已经通过它的构造函数注入了演示者:

@Inject
public UserInfoPresenter(UserInfoView view, Activity activity) {
    this.view = view;
    this.activity = activity;
}

当我将UserInfoView放入我的模块时:

@Provides
@UserInfoScope
public UserInfoView view() {
    return new UserInfoView(activity);
}

并运行app,显示用户图像配置文件,并且glid做正确的工作。