Java Examples for io.realm.RealmChangeListener

The following java examples will help you to understand the usage of io.realm.RealmChangeListener. These source code samples are taken from different open source projects.

Example 1
Project: simple-stack-master  File: TaskRepository.java View source code
public Observable<List<Task>> getTasks() {
    return Observable.create((ObservableOnSubscribe<List<Task>>)  emitter -> {
        Realm realm = Realm.getDefaultInstance();
        final RealmResults<DbTask> dbTasks = realm.where(DbTask.class).findAllSorted(DbTaskFields.ID, Sort.ASCENDING);
        final RealmChangeListener<RealmResults<DbTask>> realmChangeListener =  element -> {
            if (!emitter.isDisposed()) {
                List<Task> tasks = mapFrom(element);
                if (!emitter.isDisposed()) {
                    emitter.onNext(tasks);
                }
            }
        };
        emitter.setDisposable(Disposables.fromAction(() -> {
            if (dbTasks.isValid()) {
                dbTasks.removeChangeListener(realmChangeListener);
            }
            realm.close();
        }));
        dbTasks.addChangeListener(realmChangeListener);
        emitter.onNext(mapFrom(dbTasks));
    }).subscribeOn(looperScheduler.getScheduler()).unsubscribeOn(looperScheduler.getScheduler());
}
Example 2
Project: demos-master  File: MainActivity.java View source code
@Override
public void onClick(View v) {
    // Use them like regular java objects
    Worker dog = new Worker();
    dog.setName("Rex");
    dog.setAge(1);
    // Query Realm for all dogs younger than 2 years old
    final RealmResults<Worker> puppies = realm.where(Worker.class).lessThan("age", 2).findAll();
    Log.d(TAG, "onClick() called with: puppies.size(); = [" + puppies.size() + "]");
    // => 0 because no dogs have been added to the Realm yet
    // Persist your data in a transaction
    realm.beginTransaction();
    // Persist unmanaged objects
    final Worker managedDog = realm.copyToRealm(dog);
    // Create managed objects directly
    Company person = realm.createObject(Company.class, 2);
    person.getWorkers().add(managedDog);
    realm.commitTransaction();
    // Listeners will be notified when data changes
    puppies.addChangeListener(new RealmChangeListener<RealmResults<Worker>>() {

        @Override
        public void onChange(RealmResults<Worker> results) {
            // Query results are updated in real time
            Log.d(TAG, "onChange() called with: results = [" + results.size() + "]");
            Log.d(TAG, "onChange() called with: puppies.size(); = [" + puppies.size() + "]");
        // => 1
        }
    });
    // Asynchronously update objects on a background thread
    realm.executeTransactionAsync(new Realm.Transaction() {

        @Override
        public void execute(Realm bgRealm) {
            Worker dog = bgRealm.where(Worker.class).equalTo("age", 1).findFirst();
            dog.setAge(3);
        }
    }, new Realm.Transaction.OnSuccess() {

        @Override
        public void onSuccess() {
            Log.d(TAG, "onSuccess() puppies.size():" + puppies.size());
            Log.d(TAG, "onSuccess() managedDog.getAge():" + managedDog.getAge());
            // Original queries and Realm objects are automatically updated.
            // => 0 because there are no more puppies younger than 2 years old
            puppies.size();
            // => 3 the dogs age is updated
            managedDog.getAge();
        }
    });
}
Example 3
Project: aweather-master  File: CurrentWeatherListFragment.java View source code
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    setHasOptionsMenu(true);
    realm = Realm.getInstance(getActivity());
    RealmResults<CurrentWeatherModel> currentWeatherModels = realm.where(CurrentWeatherModel.class).findAll();
    mCurrentWeatherListAdapter = new CurrentWeatherListViewAdapter(getActivity(), R.layout.current_weather_list_fragment, currentWeatherModels, true);
    setListAdapter(mCurrentWeatherListAdapter);
    getListView().setOnItemClickListener(this);
    final SwipeRefreshLayout refreshListView = (SwipeRefreshLayout) getView().findViewById(R.id.swipe_layout);
    refreshListView.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {

        @Override
        public void onRefresh() {
            if (mCurrentWeatherListAdapter.getCount() > 0) {
                WeatherLoaderService.updateCurrentWeather(getActivity());
            }
        }
    });
    emptyView = (LinearLayout) getView().findViewById(R.id.empty);
    progressEmptyView = (LinearLayout) getView().findViewById(android.R.id.progress);
    if (currentWeatherModels.size() == 0) {
        getListView().setEmptyView(progressEmptyView);
        WeatherLoaderService.loadDefaultCitiesList(getActivity());
    } else {
        getListView().setEmptyView(emptyView);
    }
    realm.addChangeListener(new RealmChangeListener() {

        @Override
        public void onChange() {
            refreshListView.setRefreshing(false);
            getListView().setEmptyView(emptyView);
        }
    });
    SwipeDismissListViewTouchListener touchListener = new SwipeDismissListViewTouchListener(getListView(), new SwipeDismissListViewTouchListener.OnDismissCallback() {

        public void onDismiss(ListView listView, int[] reverseSortedPositions) {
            for (int position : reverseSortedPositions) {
                realm.beginTransaction();
                RealmResults<CurrentWeatherModel> result = realm.where(CurrentWeatherModel.class).findAll();
                result.remove(position);
                if (result.size() == 0) {
                    getListView().setEmptyView(emptyView);
                }
                realm.commitTransaction();
            }
        }
    });
    getListView().setOnTouchListener(touchListener);
    getListView().setOnScrollListener(touchListener.makeScrollListener());
    loadDefaultsButton = (Button) getView().findViewById(R.id.load_defaults);
    loadDefaultsButton.setOnClickListener(this);
}
Example 4
Project: mobile-master  File: Collection.java View source code
public void onChange(T observer, OrderedCollectionChangeSet changes) {
    if (listener instanceof OrderedRealmCollectionChangeListener) {
        //noinspection unchecked
        ((OrderedRealmCollectionChangeListener<T>) listener).onChange(observer, changes);
    } else if (listener instanceof RealmChangeListener) {
        //noinspection unchecked
        ((RealmChangeListener<T>) listener).onChange(observer);
    } else {
        throw new RuntimeException("Unsupported listener type: " + listener);
    }
}
Example 5
Project: FASTA-master  File: RealmActivity.java View source code
@Override
protected void onCreate(final Bundle savedInstanceState) {
    findViewById(android.R.id.content).setSystemUiVisibility(findViewById(android.R.id.content).getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // Handle Toolbar
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle(R.string.sample_realm_list);
    //style our ui
    new MaterializeBuilder().withActivity(this).build();
    //create our FastAdapter which will manage everything
    mFastItemAdapter = new FastItemAdapter<>();
    //configure our fastAdapter
    mFastItemAdapter.withOnClickListener(new FastAdapter.OnClickListener<RealmSampleUserItem>() {

        @Override
        public boolean onClick(View v, IAdapter<RealmSampleUserItem> adapter, RealmSampleUserItem item, int position) {
            Toast.makeText(v.getContext(), item.getName(), Toast.LENGTH_SHORT).show();
            return false;
        }
    });
    //get our recyclerView and do basic setup
    RecyclerView rv = (RecyclerView) findViewById(R.id.rv);
    rv.setLayoutManager(new LinearLayoutManager(this));
    rv.setItemAnimator(new AlphaInAnimator());
    rv.setAdapter(mFastItemAdapter);
    //Get a realm instance for this activity
    mRealm = Realm.getDefaultInstance();
    //Add a realm on change listener (don´t forget to close this realm instance before adding this listener again)
    mRealm.where(RealmSampleUserItem.class).findAllAsync().addChangeListener(new RealmChangeListener<RealmResults<RealmSampleUserItem>>() {

        @Override
        public void onChange(RealmResults<RealmSampleUserItem> userItems) {
            //This will call twice
            //1.) from findAllAsync()
            //2.) from createData()
            mFastItemAdapter.setNewList(userItems);
        }
    });
    //fill with some sample data
    createData();
    //set the back arrow in the toolbar
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(false);
    //restore selections (this has to be done after the items were added
    mFastItemAdapter.withSavedInstanceState(savedInstanceState);
}
Example 6
Project: bd-master  File: ActivityMain.java View source code
private void initRecycler() {
    mRecycler = (BucketRecyclerView) findViewById(R.id.rv_drops);
    mEmptyView = findViewById(R.id.empty_drops);
    mRecycler.setViewsToHideWhenEmpty(mToolbar);
    mRecycler.setViewsToShowWhenEmpty(mEmptyView);
    //Add a divider to our RecyclerView
    mRecycler.addItemDecoration(new Divider(this, LinearLayoutManager.VERTICAL));
    mRecycler.setItemAnimator(new DefaultItemAnimator());
    mBtnAdd = (Button) findViewById(R.id.btn_add);
    mBtnAdd.setOnClickListener(mBtnAddListener);
    mResults = mRealm.where(Drop.class).findAllSortedAsync(WHEN);
    mAdapter = new AdapterDrops(this, mRealm, mResults);
    mAdapter.setHasStableIds(true);
    mResults.addChangeListener(new RealmChangeListener() {

        @Override
        public void onChange() {
            mAdapter.updateResults(mResults);
            mResults.removeChangeListener(this);
        }
    });
    //Let our Activity handle the event when the footer is clicked from our RecyclerView
    mAdapter.setAddListener(mAddListener);
    //Let our Activity handle the event when the Add Drop button is clicked from the empty view
    mAdapter.setMarkListener(mMarkListener);
    //Handler the swipe from our RecyclerView
    ItemTouchHelper.Callback callback = new SimpleTouchCallback(mAdapter);
    ItemTouchHelper touchHelper = new ItemTouchHelper(callback);
    touchHelper.attachToRecyclerView(mRecycler);
    mRecycler.setAdapter(mAdapter);
}
Example 7
Project: realm-java-master  File: Collection.java View source code
public void onChange(T observer, OrderedCollectionChangeSet changes) {
    if (listener instanceof OrderedRealmCollectionChangeListener) {
        //noinspection unchecked
        ((OrderedRealmCollectionChangeListener<T>) listener).onChange(observer, changes);
    } else if (listener instanceof RealmChangeListener) {
        //noinspection unchecked
        ((RealmChangeListener<T>) listener).onChange(observer);
    } else {
        throw new RuntimeException("Unsupported listener type: " + listener);
    }
}
Example 8
Project: FastAdapter-master  File: RealmActivity.java View source code
@Override
protected void onCreate(final Bundle savedInstanceState) {
    findViewById(android.R.id.content).setSystemUiVisibility(findViewById(android.R.id.content).getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // Handle Toolbar
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle(R.string.sample_realm_list);
    //style our ui
    new MaterializeBuilder().withActivity(this).build();
    //create our FastAdapter which will manage everything
    mFastItemAdapter = new FastItemAdapter<>();
    //configure our fastAdapter
    mFastItemAdapter.withOnClickListener(new FastAdapter.OnClickListener<RealmSampleUserItem>() {

        @Override
        public boolean onClick(View v, IAdapter<RealmSampleUserItem> adapter, RealmSampleUserItem item, int position) {
            Toast.makeText(v.getContext(), item.getName(), Toast.LENGTH_SHORT).show();
            return false;
        }
    });
    //get our recyclerView and do basic setup
    RecyclerView rv = (RecyclerView) findViewById(R.id.rv);
    rv.setLayoutManager(new LinearLayoutManager(this));
    rv.setItemAnimator(new AlphaInAnimator());
    rv.setAdapter(mFastItemAdapter);
    //Get a realm instance for this activity
    mRealm = Realm.getDefaultInstance();
    //Add a realm on change listener (don´t forget to close this realm instance before adding this listener again)
    mRealm.where(RealmSampleUserItem.class).findAllAsync().addChangeListener(new RealmChangeListener<RealmResults<RealmSampleUserItem>>() {

        @Override
        public void onChange(RealmResults<RealmSampleUserItem> userItems) {
            //This will call twice
            //1.) from findAllAsync()
            //2.) from createData()
            mFastItemAdapter.setNewList(userItems);
        }
    });
    //fill with some sample data
    createData();
    //set the back arrow in the toolbar
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(false);
    //restore selections (this has to be done after the items were added
    mFastItemAdapter.withSavedInstanceState(savedInstanceState);
}
Example 9
Project: MontrealJustInCase-master  File: MainActivity.java View source code
/**
     * Load the cached data, or request download
     *
     * @param type
     */
private void loadMapData(@MapType final String type) {
    if (!isMapReady()) {
        return;
    }
    if (mRealmListener != null) {
        // Remove previously added RealmChangeListener
        mRealm.removeChangeListener(mRealmListener);
        mRealmListener = null;
    }
    // First, query the Realm db for the current mapType
    final RealmResults<RealmPlacemark> realmPlacemarks = RealmQueries.queryPlacemarksByMapType(mRealm, type, UserPrefs.getInstance(getApplicationContext()).getEnabledLayers()).findAll();
    if (realmPlacemarks.size() > 0) {
        // Has cached data
        final List<Marker> markers = MapUtils.addPlacemarksToMap(vMap, realmPlacemarks);
        new Handler().postDelayed(new Runnable() {

            /**
                 * Delay hiding the progressbar for 750ms, avoids blink-effect on fast operations.
                 * And allows findAndShowNearestMarker() to wait for the real center in case
                 * of camera animation.
                 */
            @Override
            public void run() {
                toggleProgressBar(false);
                MapUtils.findAndShowNearestMarker(vMap, markers, mSnackbarParent);
            }
        }, PROGRESS_BAR_ANIM_DURATION);
    } else {
        // Add a change listener for empty data only, to avoid showing empty maps.
        // Remote updates will be shown on tab changes. This is not an issue for our app
        // because of the low frequency/value of remote data updates.
        mRealmListener = new RealmChangeListener() {

            @Override
            public void onChange(Object element) {
                loadMapData(type);
            }
        };
        mRealm.addChangeListener(mRealmListener);
    }
}
Example 10
Project: Just-Weather-master  File: RealmObjectObservable.java View source code
@Override
public void subscribe(ObservableEmitter<T> emitter) throws Exception {
    emitter.onNext(object);
    RealmChangeListener<T> changeListener = emitter::onNext;
    RealmObject.addChangeListener(object, changeListener);
    emitter.setCancellable(() -> RealmObject.removeChangeListener(object, changeListener));
}
Example 11
Project: countries-master  File: RealmResultsObservable.java View source code
@Override
public void subscribe(ObservableEmitter<RealmResults<T>> emitter) throws Exception {
    RealmChangeListener<RealmResults<T>> changeListener = emitter::onNext;
    realmResults.addChangeListener(changeListener);
    emitter.setCancellable(() -> realmResults.removeChangeListener(changeListener));
}