convertir a lambda de rx java expresión
He comenzado a grok en retrolambda y rxjava. Algunas expresiones i'v convertido por mí mismo, pero algunos de ellos no puedo convertir. He añadido retrolambda a mi proyecto.Aquí hay ejemplos
public Observable<ImmutableList<Repository>> getUsersRepositories() { return githubApiService.getUsersRepositories(user.login) .map(repositoryResponses -> { final ImmutableList.Builder<Repository> listBuilder = ImmutableList.builder(); for (RepositoryResponse repositoryResponse : repositoryResponses) { Repository repository = new Repository(); repository.id = repositoryResponse.id; repository.name = repositoryResponse.name; repository.url = repositoryResponse.url; listBuilder.add(repository); } return listBuilder.build(); }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); }
Pero no sé cómo convertir esta paz de código:
- RxJava se vuelve a suscribir al evento tras la restauración de la actividad
- RxJava, buen caso de uso de flatmap
- Android retofit + rxjava cómo procesar el parámetro de petición dinámica con repeatwhen
- Cómo manejar el `IllegalArgumentException` en RxJava?
- ¿Cómo administrar un DialogFragment con RxJava?
obs.subscribe(new Observer<List<Integer>>() { public void onCompleted() { System.out.println("completed"); } public void onError(Throwable e) { System.out.println("failure"); } public void onNext(List<Integer> value) { System.out.println("onnext=" + value); } });
- Utilice RxJava y Retrofit para iterar a través de la lista y aumentar los resultados basados en subconsultas
- Suscribir un cajón de navegación a un Observable
- Hilo predeterminado de actualización
- RxJava para Android: Exponer Excepción y Reintentar (con retraso)
- Manejo de excepciones API en RxJava
- RxJava reintentoCuando vuelve a suscribir la propagación
- RxJava comparte las emisiones de un Observable entre múltiples suscriptores
- Cómo amortiguar solamente la última emisión de rx.Observable durante contrapresión
Lambda es una función anónima y estás creando una clase anónima, similar pero diferente.
La primera es una Lambda: .map(repositoryResponses -> {...}
, ¿qué quieres cambiar más? La segunda parte es un "código de bloque" para que no puedas reducirlo más.
En segundo lugar usted no puede convertirlo porque no es una función.
Creo que quieres hacer algo como esto:
obs.subscribe( (List<Integer> value) -> System.out.println("onnext=" + value), (Throwable e) -> System.out.println("failure"), ()-> System.out.println("completed"));
Puedes consultar este blog y este ejemplo en GitHub .
He encontrado la manera de resolverlo. Aquí está el código antes de la conversión
repositoriesManager.getUsersRepositories().subscribe(new SimpleObserver<ImmutableList<Repository>>() { @Override public void onNext(ImmutableList<Repository> repositories) { repositoriesListActivity.showLoading(false); repositoriesListActivity.setRepositories(repositories); } @Override public void onError(Throwable e) { repositoriesListActivity.showLoading(false); } });
después de la conversión
repositoriesManager.getUsersRepositories().subscribe(repositories -> { repositoriesListActivity.showLoading(false); repositoriesListActivity.setRepositories(repositories); },throwable -> { repositoriesListActivity.showLoading(false); });
- Cómo consultar una tabla FTS4 de contenido externo pero devolver columnas adicionales de la tabla de contenido original
- No abra el cajón de navegación de forma predeterminada