java类android.databinding.Observable的实例源码

TwoWayActivity.java 文件源码 项目:Android-Code-Demos 阅读 30 收藏 0 点赞 0 评论 0
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mBinding = DataBindingUtil.setContentView(this, R.layout.activity_two_way);
    FormModel formModel = new FormModel("123", "123");
    mBinding.setModel(formModel);
    formModel.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable observable, int id/* Model 中 BR 属性的 id 值 */) {
            switch (id) {
                case BR.name:
                    Toast.makeText(TwoWayActivity.this, "BR.name: " + id, Toast.LENGTH_SHORT).show();
                    break;
                case BR.password:
                    Toast.makeText(TwoWayActivity.this, "BR.password: " + id, Toast.LENGTH_SHORT).show();
                    break;
            }

        }
    });
}
AtomWatcher.java 文件源码 项目:ui-atoms-android 阅读 32 收藏 0 点赞 0 评论 0
public AtomWatcher(BaseObservable... fields){
    for(BaseObservable field: fields){

        BaseObservable af = field;

        Observable.OnPropertyChangedCallback callback = new Observable.OnPropertyChangedCallback() {
            @Override
            public void onPropertyChanged(Observable sender, int propertyId) {
                run();
            }
        };

        field.addOnPropertyChangedCallback(callback);

        closables.add(new ClosableAction(()->{
            af.removeOnPropertyChangedCallback(callback);
        }));
    }
}
AtomListView.java 文件源码 项目:ui-atoms-android 阅读 37 收藏 0 点赞 0 评论 0
public ItemViewHolder(ViewDataBinding binding) {
    super(binding);

    itemModel = new ItemModel();
    ReflectionHelper.run(binding,"set",itemModel);

    itemModel.selected.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable sender, int propertyId) {
            if(!updateSelected)
                return;
            if(selectedItems == null)
                return;
            if(selectedItems.contains(model)){
                if(allowMultipleSelection){
                    selectedItems.remove(model);
                }
            }else{
                if(!allowMultipleSelection){
                    selectedItems.clear();
                }
                selectedItems.add(model);
            }
        }
    });
}
SettingsRVAdapter.java 文件源码 项目:Flubber 阅读 38 收藏 0 点赞 0 评论 0
public void setAnimationBody(final CustomAnimationBody animationBody) {
    this.models = AnimationBodyModelUtil.generateFor(animationBody);
    for (SeekBarModel model : models) {

        modelsMap.put(model.getValue(), model);

        model.getValue().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
            @Override
            public void onPropertyChanged(Observable observable, int i) {
                if (modelChangedCallback != null) {
                    modelChangedCallback.onModelChanged(modelsMap.get(observable));
                }
            }
        });
    }
    notifyDataSetChanged();
}
LayerRowViewModel.java 文件源码 项目:spline 阅读 23 收藏 0 点赞 0 评论 0
public void setLayer(Layer layer) {
    if (this.layer != null && changedCallback != null) {
        this.layer.removeOnPropertyChangedCallback(changedCallback);
    }
    this.layer = layer;

    // Because other parts of the application are updating layer model objects directly, we
    // need to listen for changes to the model's properties and notify of those property
    // changes on this object (because they share property names we can get away with this).
    changedCallback = new OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable sender, int propertyId) {
            notifyPropertyChanged(propertyId);
        }
    };
    layer.addOnPropertyChangedCallback(changedCallback);
}
Layer.java 文件源码 项目:spline 阅读 49 收藏 0 点赞 0 评论 0
public void setParent(Observable parent) {
    this.parent = parent;
    if (this.parent != null) {
        this.parent.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {

            @Override
            public void onPropertyChanged(Observable observable, int i) {
                if (i == BR.visible || i == BR.ancestorsVisible) {
                    notifyPropertyChanged(BR.ancestorsVisible);
                }
            }
        });
    }
    notifyPropertyChanged(BR.parent);
    notifyPropertyChanged(BR.parentDepth);
}
MovieViewModel.java 文件源码 项目:android-mvvm-sample 阅读 33 收藏 0 点赞 0 评论 0
public MovieViewModel(MoviesRepository moviesRepository) {
    this.moviesRepository = moviesRepository;

    mObservableMovie.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable observable, int i) {
            Movie movie = mObservableMovie.get();

            if (movie != null) {
                posterUrl.set(getPosterUrl(movie));
                movieTitle.set(getTitle(movie));
                backdropUrl.set(getBackdropUrl(movie));
                voteAverage.set((float) movie.getVoteAverage());
                voteCount.set(movie.getVoteCount());
                movieOverview.set(movie.getOverview());
                movieTagline.set(movie.getTagline());
                movieReleaseDate.set(getReleaseDate(movie));
            }
        }
    });
}
PostActionVM.java 文件源码 项目:chaoli-forum-for-android-2 阅读 34 收藏 0 点赞 0 评论 0
public PostActionVM() {
    sharedPreferences = ChaoliApplication.getAppContext().getSharedPreferences(TAG, MODE_PRIVATE);
    editor = sharedPreferences.edit();
    title.set(sharedPreferences.getString(DRAFT_TITLE, ""));
    content.set(sharedPreferences.getString(DRAFT_CONTENT, ""));
    prevContent = content.get();
    channelId.set(sharedPreferences.getInt(DRAFT_CHANNEL, Channel.caff.getChannelId()));
    curChannel = Channel.getChannel(channelId.get());

    content.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable observable, int i) {

        }
    });
}
BaseMusicFragment.java 文件源码 项目:vk_music_android 阅读 34 收藏 0 点赞 0 评论 0
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    currentAudioCallback = new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable observable, int i) {
            onCurrentAudioChanged(currentAudio.get());
        }
    };
    currentAlbumArtCallback = new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable observable, int i) {
            getActivity().runOnUiThread(() -> {
                onCurrentAlbumArtChanged(currentAlbumArt.get());
            });
        }
    };
}
MusicService.java 文件源码 项目:vk_music_android 阅读 45 收藏 0 点赞 0 评论 0
@Override
        public void onPropertyChanged(Observable observable, int i) {
            Paper.book().write("shuffle", shuffleSetting);
        }
    };
    onRepeatChangedCallback = new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable observable, int i) {
            Paper.book().write("repeat", repeatSetting);
        }
    };
    shuffleSetting.addOnPropertyChangedCallback(onShuffleChangedCallback);
    repeatSetting.addOnPropertyChangedCallback(onRepeatChangedCallback);

    System.out.println("MusicService started");
}
MainActivity.java 文件源码 项目:android-ponewheel 阅读 30 收藏 0 点赞 0 评论 0
private void logOnChange(OWDevice.DeviceCharacteristic deviceCharacteristic) {
    deviceCharacteristic.value.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable observable, int i) {
            Timber.d(deviceCharacteristic.key.get() + " = " + deviceCharacteristic.value.get());
        }
    });
}
ValiFieldBase.java 文件源码 项目:valifi 阅读 28 收藏 0 点赞 0 评论 0
/**
 * Core of all validations.
 * Called when value changed (from layout or by notifyPropertyChanged)
 * 1) notifies bound fields (e.g. when verifying fields)
 * 2) checks if value can be empty
 * 3) validates all attached blocking validators
 * 4) validates attached asynchronous validators
 *
 * @return property changed callback which should be set as field
 */
private OnPropertyChangedCallback setupOnPropertyChangedCallback() {
    return new OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable observable, int brId) {
            if(brId != com.mlykotom.valifi.BR.value || mIsResetting) return;

            // ad 1) notifying bound fields
            notifyBoundFieldsValueChanged();

            // ad 2) checking if value can be empty
            if(mIsEmptyAllowed && (mValue == null || whenThisFieldIsEmpty(mValue))) {
                setIsError(false, null);
                return;
            }

            cancelAndSetValidationTask(null);
            setInProgress(true);

            // ad 3) validating synchronous validators
            if(!checkBlockingValidators()) {
                setInProgress(false);
                cancelAndSetValidationTask(null);
                return;
            }

            // ad 4) validating asynchronous validators
            checkAsyncValidatorsIfAny();
        }
    };
}
ValiFieldBaseTest.java 文件源码 项目:valifi 阅读 25 收藏 0 点赞 0 评论 0
@Test
public void checkDelayedError() throws InterruptedException {
    final long delay_time = 700;

    final ValiFieldBase<String> field = new ValiFieldText("invalid_length_12345");
    field.setErrorDelay(delay_time);
    assertThat(field.mErrorDelay, is(delay_time));

    final boolean[] testIsOk = {false};
    field.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable observable, int i) {
            if(i != com.mlykotom.valifi.BR.error) return;

            testIsOk[0] = true;
        }
    });

    field.addCustomValidator(ValiFiTest.FIELD_ERROR_MSG, new ValiFieldBase.PropertyValidator<String>() {
        @Override
        public boolean isValid(@Nullable String value) {
            return false;
        }
    });

    assertThat(field.isValid(), is(false));

    Thread.sleep(delay_time + 100);

    assertThat(field.getError(), is(ValiFiTest.FIELD_ERROR_MSG));
    assertThat(field.mDueTime, is(-1L));
    assertThat(testIsOk[0], is(true));
}
FormValidatedObservableBoolean.java 文件源码 项目:DroidMVVMValidator 阅读 35 收藏 0 点赞 0 评论 0
private void init() {
    for (final ValidatedObservableField field : this.fields) {
        field.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
            @Override
            public void onPropertyChanged(Observable observable, int i) {
                set(areAllFieldsValid());
            }
        });
    }

    set(areAllFieldsValid());
}
ValidatedObservableFieldCreatedByDefaultConstructorShould.java 文件源码 项目:DroidMVVMValidator 阅读 30 收藏 0 点赞 0 评论 0
@Test
public void notCallNotifyChangeForSetErrorMessageWithNullValue() {
    field.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable observable, int i) {
            fail("Should not get here");
        }
    });

    field.setErrorMessage(null);
}
ValidatedObservableFieldCreatedByDefaultConstructorShould.java 文件源码 项目:DroidMVVMValidator 阅读 21 收藏 0 点赞 0 评论 0
@Test
public void callNotifyChangeForSetErrorMessageWithNullValueIfPreviousErrorMessageWasNotNull() {
    final String newErrorMessage = "newErrorMessage";
    field.setErrorMessage(newErrorMessage);

    field.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable observable, int i) {
            assertNull(field.getErrorMessage());
        }
    });

    field.setErrorMessage(null);
    assertNull(field.getErrorMessage());
}
ValidatedObservableFieldCreatedByDefaultConstructorShould.java 文件源码 项目:DroidMVVMValidator 阅读 32 收藏 0 点赞 0 评论 0
@Test
public void notCallNotifyChangeForSetErrorMessageWithTheSameAsCurrentOne() {
    final String newErrorMessage = "newErrorMessage";
    field.setErrorMessage(newErrorMessage);

    field.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable observable, int i) {
            fail("Should not get here");
        }
    });

    field.setErrorMessage(newErrorMessage);
}
EpochSurfaceView.java 文件源码 项目:Muse-EEG-Toolkit 阅读 31 收藏 0 点赞 0 评论 0
public void setEpochCollector(EpochCollector collector) {
  this.collector = collector;
  this.collector.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
      @Override public void onPropertyChanged(Observable sender, int propertyId) {
        EpochSurfaceView.this.invalidate();
      }
    }
  );
}
RecordActivity.java 文件源码 项目:Muse-EEG-Toolkit 阅读 37 收藏 0 点赞 0 评论 0
@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  // Initialize Muse first up.
  MuseManagerAndroid.getInstance().setContext(this);

  // Bind viewmodel to the view.
  ActivityRecordBinding binding =
      DataBindingUtil.setContentView(this, R.layout.activity_record);
  binding.setRecordVM(viewModel);
  binding.setDeviceVM(deviceVM);

  // Bind action bar, seems like this can't be done in the layout :(
  deviceVM.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
    @Override
    public void onPropertyChanged(Observable sender, int propertyId) {
      RecordActivity.this.getSupportActionBar().setTitle(
          String.format("%s: %s", deviceVM.getName(), deviceVM.getConnectionState())
      );
    }
  });

  // And attach the desired muse to the VM once connected.
  final String macAddress = getIntent().getExtras().getString("mac");
  MuseManagerUtil.getByMacAddress(macAddress, new MuseManagerUtil.MuseCallback() {
    @Override
    public void museFound(Muse muse) {
      RecordActivity.this.deviceVM.setMuse(muse);
    }
  });
}
RecordVM.java 文件源码 项目:Muse-EEG-Toolkit 阅读 31 收藏 0 点赞 0 评论 0
public RecordVM(Context context, StreamingDeviceViewModel device) {
  this.context = context;
  this.device = device;
  this.device.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
    @Override
    public void onPropertyChanged(Observable sender, int propertyId) {
      // TODO: Only propogate subset of properties?
      RecordVM.this.notifyChange();
    }
  });
}
AtomCommand.java 文件源码 项目:ui-atoms-android 阅读 35 收藏 0 点赞 0 评论 0
@BindingAdapter(value = {"clickCommand", "commandParameter"}, requireAll = false)
public static void setAdapter(View button, AtomCommand command, Object parameter){

    Observable.OnPropertyChangedCallback pc;
    AtomCommand oldCommand = (AtomCommand)button.getTag(R.id.atomCommand);
    if(oldCommand != command) {
        if(button instanceof Button) {
            if(oldCommand!=null) {
                pc = (Observable.OnPropertyChangedCallback)
                    button.getTag(R.id.atomCommandEnabled);
                if (pc != null) {
                    oldCommand.enabled.removeOnPropertyChangedCallback(pc);
                }
            }

            pc = new Observable.OnPropertyChangedCallback() {
                @Override
                public void onPropertyChanged(Observable sender, int propertyId) {
                    ((Button)button).setEnabled(command.enabled.get());
                }
            };
            command.enabled.addOnPropertyChangedCallback(pc);
        }

        button.setTag(R.id.atomCommand, command);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                command.execute(parameter);
            }
        });
    }

    command.parameter.set(parameter);
}
RadioRVAdapter.java 文件源码 项目:Flubber 阅读 38 收藏 0 点赞 0 评论 0
public RadioRVAdapter(Context context) {
    this.context = context;
    checked.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable observable, int i) {
            if (selectedListener != null) {
                final ObservableField observableField = (ObservableField) observable;
                selectedListener.onElementSelected((RadioElementModel) observableField.get());
            }
        }
    });
}
ShapeLayer.java 文件源码 项目:spline 阅读 30 收藏 0 点赞 0 评论 0
/**
 * Exists as public method to allow Json deserializing to add color change listener after
 * deserializing
 */
public void addOnColorChangeListener() {
    this.color.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable sender, int propertyId) {
            ShapeLayer.this.notifyPropertyChanged(BR.color);
        }
    });
}
AddEditTaskFragment.java 文件源码 项目:simple-stack 阅读 26 收藏 0 点赞 0 评论 0
@Override
public void bindViewModel(AddEditTaskViewModel viewModel) {
    checkNotNull(viewModel);
    this.viewModel = viewModel;
    snackbarCallback = new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable observable, int i) {
            SnackbarUtils.showSnackbar(getView(), viewModel.getSnackbarText());
        }
    };
    viewModel.snackbarText.addOnPropertyChangedCallback(snackbarCallback);
}
TaskDetailFragment.java 文件源码 项目:simple-stack 阅读 35 收藏 0 点赞 0 评论 0
private void setupSnackbar() {
    snackbarCallback = new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable observable, int i) {
            SnackbarUtils.showSnackbar(getView(), viewModel.getSnackbarText());
        }
    };
    viewModel.snackbarText.addOnPropertyChangedCallback(snackbarCallback);
}
MvvmViewModel.java 文件源码 项目:Mvvm 阅读 33 收藏 0 点赞 0 评论 0
@Override
public final <T> void addSubscribe(io.reactivex.Observable<T> observable, Observer<T> observer) {
    if (null == observable || null == observer) {
        return;
    }
    observable
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(observer);
}
RxObservableBooleanTest.java 文件源码 项目:RxDataBinding 阅读 31 收藏 0 点赞 0 评论 0
@SuppressWarnings("ConstantConditions") //
@Test @UiThreadTest public void propertyChangeEvents() {
  boolean value = true;

  observableBoolean.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
    @Override public void onPropertyChanged(Observable observable, int propertyId) {
      // do something
    }
  });

  RecordingObserver<Boolean> o = new RecordingObserver<>();
  RxObservableBoolean.propertyChanges(observableBoolean).subscribe(o);
  o.assertNoMoreEvents();

  observableBoolean.set(value);
  assertEquals(value, o.takeNext());

  value = !value;
  observableBoolean.set(value);
  assertEquals(value, o.takeNext());

  o.dispose();

  value = !value;
  observableBoolean.set(value);
  o.assertNoMoreEvents();
}
BindingViewItem.java 文件源码 项目:recyclerview-adapters 阅读 29 收藏 0 点赞 0 评论 0
public void bindVisible(final ObservableField<Boolean> visibleChangeField) {
    if (visibleChangeField.get() != null) setVisible(visibleChangeField.get());

    visibleChangeCallback = new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable sender, int propertyId) {
            setVisible(visibleChangeField.get());
        }
    };
    visibleChangeField.addOnPropertyChangedCallback(visibleChangeCallback);
    this.visibleChangeField = visibleChangeField;
}
BindingItemAdapter.java 文件源码 项目:recyclerview-adapters 阅读 25 收藏 0 点赞 0 评论 0
public void bindVisible(final ObservableField<Boolean> visibleChangeField) {
    if (visibleChangeField.get() != null) setVisible(visibleChangeField.get());

    visibleChangeCallback = new Observable.OnPropertyChangedCallback() {
        @Override
        public void onPropertyChanged(Observable sender, int propertyId) {
            setVisible(visibleChangeField.get());
        }
    };
    visibleChangeField.addOnPropertyChangedCallback(visibleChangeCallback);
    this.visibleChangeField = visibleChangeField;
}
LegislatorSearchInputPresenter.java 文件源码 项目:Android-Continuity 阅读 30 收藏 0 点赞 0 评论 0
@Override
public void onPropertyChanged(Observable observable, int fieldId) {
    LegislatorSearchInputViewModel viewModel = (LegislatorSearchInputViewModel) observable;
    //Switch will not work on BR fields, c'est la vie.
    if (fieldId == BR.legislatorName) {
        //Don't show validation failure unless they've already failed validation by submitting.
        //Eagerly show validation acceptance if they have failed validation.
        if (!viewModel.isNameValid()) validateName(viewModel.getLegislatorName());
    } else if (fieldId == BR.zipCode) {
        //Don't show validation failure unless they've already failed validation by submitting.
        //Eagerly show validation acceptance if they have failed validation.
        if (!viewModel.isZipValid()) validateZip(viewModel.getZipCode());
    }
}


问题


面经


文章

微信
公众号

扫码关注公众号