@Override public void onTextChanged(CharSequence charSequence, int start, int before, int count) { editTextUsernameValue = charSequence.toString(); searchButtonVisibility.set(charSequence.length() > 0 ? View.VISIBLE : View.GONE); }
@Test public void shouldSearchUsernameWithRepos() { String username = "usernameWithRepos"; TextView textView = new TextView(application); textView.setText(username); List<Repository> mockRepos = MockModelFabric.newListOfRepositories(10); doReturn(rx.Observable.just(mockRepos)).when(githubService).publicRepositories(username); mainViewModel.onSearchAction(textView, EditorInfo.IME_ACTION_SEARCH, null); verify(dataListener).onRepositoriesChanged(mockRepos); assertEquals(mainViewModel.infoMessageVisibility.get(), View.INVISIBLE); assertEquals(mainViewModel.progressVisibility.get(), View.INVISIBLE); assertEquals(mainViewModel.recyclerViewVisibility.get(), View.VISIBLE); }
public MainViewModel(Context context, DataListener dataListener) { this.context = context; this.dataListener = dataListener; infoMessageVisibility = new ObservableInt(View.VISIBLE); progressVisibility = new ObservableInt(View.INVISIBLE); recyclerViewVisibility = new ObservableInt(View.INVISIBLE); searchButtonVisibility = new ObservableInt(View.GONE); infoMessage = new ObservableField<>(context.getString(R.string.default_info_message)); }
private void moveToPosition(int position) { listPosition.set(position); listPosition.notifyChange(); } /*public void loadMore() {
setViewModel(new LoginActivityVM()); viewModel.clickAQ.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { @Override public void onPropertyChanged(Observable observable, int i) { viewModel.showToast.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { @Override public void onPropertyChanged(Observable observable, int i) { viewModel.goToMainActivity.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { @Override public void onPropertyChanged(Observable observable, int i) { viewModel.clickSignUp.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { @Override public void onPropertyChanged(Observable observable, int i) {
@Override public void subscribe(FlowableEmitter<Integer> emitter) throws Exception { final OnPropertyChangedCallback callback = new OnPropertyChangedCallback() { @Override public void onPropertyChanged(android.databinding.Observable dataBindingObservable, int propertyId) { if (dataBindingObservable == observableInt) { emitter.onNext(observableInt.get()); } } }; observableInt.addOnPropertyChangedCallback(callback); emitter.setCancellable(() -> observableInt.removeOnPropertyChangedCallback(callback)); } }, BackpressureStrategy.DROP);
@Override public void onSetChannelFailure(int statusCode) { // restore showToast.notifyChange(); toastContent.set(getString(R.string.network_err)); PostActionVM.this.channelId.set(preChannel.getChannelId()); curChannel = preChannel; saveChannelId(curChannel.getChannelId()); } });
viewModel.showToast.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { @Override public void onPropertyChanged(Observable observable, int i) { viewModel.goToAlbum.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { @Override public void onPropertyChanged(Observable observable, int i) {
@Override public void onCompleted() { if (dataListener != null) dataListener.onRepositoriesChanged(repositories); progressVisibility.set(View.INVISIBLE); if (!repositories.isEmpty()) { recyclerViewVisibility.set(View.VISIBLE); } else { infoMessage.set(context.getString(R.string.text_empty_repos)); infoMessageVisibility.set(View.VISIBLE); } }
@Test public void shouldSearchUsernameWithNoRepos() { String username = "usernameWithoutRepos"; TextView textView = new TextView(application); textView.setText(username); when(githubService.publicRepositories(username)) .thenReturn(Observable.just(Collections.<Repository>emptyList())); mainViewModel.onSearchAction(textView, EditorInfo.IME_ACTION_SEARCH, null); verify(dataListener).onRepositoriesChanged(Collections.<Repository>emptyList()); assertEquals(mainViewModel.infoMessage.get(), application.getString(R.string.text_empty_repos)); assertEquals(mainViewModel.infoMessageVisibility.get(), View.VISIBLE); assertEquals(mainViewModel.progressVisibility.get(), View.INVISIBLE); assertEquals(mainViewModel.recyclerViewVisibility.get(), View.INVISIBLE); }
Matcher matcher = pattern.matcher(responseStr); if (matcher.find()) { intendedConversationId.set(Integer.parseInt(matcher.group(1))); } else { toastContent = getString(R.string.conversation_has_been_deleted); if (matcher.find()) { int intentToPage = Integer.parseInt(matcher.group(1)) / 20 + 1; intendedConversationPage.set(intentToPage); } else { intendedConversationPage.set(-1); goToPost.notifyChange();
viewModel.goToPost.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { @Override public void onPropertyChanged(Observable observable, int i) {
public RepositoryViewModel(Context context, final Repository repository) { this.repository = repository; this.context = context; this.ownerName = new ObservableField<>(); this.ownerEmail = new ObservableField<>(); this.ownerLocation = new ObservableField<>(); this.ownerLayoutVisibility = new ObservableInt(View.INVISIBLE); this.ownerEmailVisibility = new ObservableInt(View.VISIBLE); this.ownerLocationVisibility = new ObservableInt(View.VISIBLE); // Trigger loading the rest of the user data as soon as the view model is created. // It's odd having to trigger this from here. Cases where accessing to the data model // needs to happen because of a change in the Activity/Fragment lifecycle // (i.e. an activity created) don't work very well with this MVVM pattern. // It also makes this class more difficult to test. Hopefully a better solution will be found loadFullUser(repository.owner.url); }
void updateFromItem(Item item) { title.set(item.title); score.set(item.score); } }
@Test public void shouldSearchInvalidUsername() { String username = "invalidUsername"; TextView textView = new TextView(application); textView.setText(username); HttpException mockHttpException = new HttpException(Response.error(404, mock(ResponseBody.class))); when(githubService.publicRepositories(username)) .thenReturn(Observable.<List<Repository>>error(mockHttpException)); mainViewModel.onSearchAction(textView, EditorInfo.IME_ACTION_SEARCH, null); verify(dataListener, never()).onRepositoriesChanged(anyListOf(Repository.class)); assertEquals(mainViewModel.infoMessage.get(), application.getString(R.string.error_username_not_found)); assertEquals(mainViewModel.infoMessageVisibility.get(), View.VISIBLE); assertEquals(mainViewModel.progressVisibility.get(), View.INVISIBLE); assertEquals(mainViewModel.recyclerViewVisibility.get(), View.INVISIBLE); }
configToolbar(R.string.sign_up); viewModel.showToast.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { @Override public void onPropertyChanged(Observable observable, int i) {