Как уведомить деятельность, когда класс репозитория получает данные? - PullRequest
0 голосов
/ 23 сентября 2018

Я новичок в компоненте архитектуры Android.это мой код, я нахожусь в точке, в которой я не знаю, как уведомить мою деятельность и получить результаты обратно

это мои коды:

Активность:

 private void iniViewModels() {
        Observer<List<User>>usersObserver=new Observer<List<User>>() {
            @Override
            public void onChanged(@Nullable List<User> users) {
                Log.v("this","LiveData: ");
                for (int i=0;i<users.size();i++){
                    Log.v("this",users.get(i).getName());
                }
            }
        };

        mViewModel = ViewModelProviders.of(this)//of-->name of act or fragment
                .get(AcActivityViewModel.class);///get -->the name of viewModelClass

        mViewModel.mUsers.observe(this,usersObserver);
    }

это мой класс viewModel:

public class IpStaticViewModel extends AndroidViewModel {
public LiveData<List<Ipe>> ips;
private AppRepository repository;

public IpStaticViewModel(@NonNull Application application) {
    super(application);
    repository=AppRepository.getInstance(application.getApplicationContext());
}

public void getIpStatics() {
    repository.getStaticIps();
}
}

это мой класс репозитория:

public class AppRepository {
private static  AppRepository ourInstance ;
private Context context;
private IpStaticInterface ipInterface;

public static AppRepository getInstance(Context context) {
    if (ourInstance == null) {
        ourInstance=new AppRepository(context);
    }
    return ourInstance;
}

private AppRepository(Context context) {
    this.context=context;
}

public void getStaticIps() {
    ipInterface= ApiConnection.getClient().create(IpStaticInterface.class);
    ipInterface.getIpes()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeWith(new SingleObserver<IpStaticList>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onSuccess(IpStaticList ipStaticList) {
                    List<Ipe>ips=ipStaticList.getIpes();
                }

                @Override
                public void onError(Throwable e) {
                    Log.v("this","Eror "+ e.getMessage());
                }
            });
}
}

Я использую модификацию для извлечения данных, она извлекает данные успешноно я не знаю, как сообщить о своей деятельности

Вы можете мне помочь?

1 Ответ

0 голосов
/ 23 сентября 2018

Имеют MutableLiveData

final MutableLiveData<List<Ipe>> data = new MutableLiveData<>();

В onSucess

 public MutableLiveData<List<Ipe>> getStaticIps() {
   ipInterface= ApiConnection.getClient().create(IpStaticInterface.class);
   ipInterface.getIpes()
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribeWith(new SingleObserver<IpStaticList>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onSuccess(IpStaticList ipStaticList) {
                List<Ipe>ips=ipStaticList.getIpes();
                data.setValue(ips);
            }

            @Override
            public void onError(Throwable e) {
                Log.v("this","Eror "+ e.getMessage());
            }
        });
        return data;
  }

В репозитории выставьте это для viewmodel

 public LiveData<List<Ipe>> getIpStatics() {
 return repository.getStaticIps();
 }

В Деятельности вы наблюдаете liveata

 IpStaticViewModel viewmodel = ViewModelProviders.of(this
            .get(IpStaticViewModel.class)
  viewModel.getIpStatics().observe(this, new Observer<List<Ipe>>() {
        @Override
        public void onChanged(@Nullable List<Ipe> ipes) {
            if (ipes != null) {
                 // dosomething
            }
        }
    });

Если вы хотите обобщить свой ответ на случай, если у вас есть ошибка или что-то еще, посмотрите на https://github.com/googlesamples/android-architecture-components/blob/master/GithubBrowserSample/app/src/main/java/com/android/example/github/vo/Resource.kt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...