Android Open Source - sres Observable List View Helper






From Project

Back to project page sres.

License

The source code is released under:

Apache License

If you think the Android project sres listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package me.tatarka.sres;
//from   ww  w  . j  av a 2s.  c  o  m
import android.os.Handler;
import android.os.Looper;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
 * Created by evan on 3/11/14.
 */
public class ObservableListViewHelper<T> {
    private Handler handler;
    private ObservableList<T> list;
    private List<T> viewList = new ArrayList<>();
    private ObservableList.Listener<T> listener = new ObservableList.Listener<T>() {
        @Override
        public void onChange(final ObservableList.ChangeType changeType, final Collection<ObservableList.Change<T>> changes) {
            if (Looper.myLooper() != Looper.getMainLooper()) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        updateBackingList(changeType, changes);
                    }
                });
            } else {
                updateBackingList(changeType, changes);
            }
        }
    };
    private ObservableList.Listener<T> deleteListener;

    public ObservableListViewHelper(List<T> list) {
        handler = new Handler(Looper.getMainLooper());
        replace(list);
    }

    public void setListener(ObservableList.Listener<T> listener) {
        deleteListener = listener;
    }

    public void replace(List<T> list) {
        if (this.list != null) {
            this.list.removeListener(listener);
        }

        if (list instanceof ObservableList) {
            this.list = (ObservableList<T>) list;
        } else {
            this.list = new ObservableArrayList<>(list);
        }

        viewList.clear();
        viewList.addAll(list);

        this.list.addListener(listener);
    }

    private void updateBackingList(ObservableList.ChangeType changeType, final Collection<ObservableList.Change<T>> changes) {
        if (changeType == ObservableList.ChangeType.UPDATE) {
            for (ObservableList.Change<T> change : changes) {
                getViewList().set(change.index, change.value);
            }
        } else if (changeType == ObservableList.ChangeType.ADD) {
            for (ObservableList.Change<T> change : changes) {
                getViewList().add(change.index, change.value);
            }
        } else if (changeType == ObservableList.ChangeType.REMOVE) {
            for (ObservableList.Change<T> change : changes) {
                getViewList().remove(change.index);
            }
        }

        if (deleteListener != null) deleteListener.onChange(changeType, changes);
    }

    public ObservableList<T> getList() {
        return list;
    }

    public List<T> getViewList() {
        return viewList;
    }
}




Java Source Code List

me.tatarka.sres.AbstractTrackable.java
me.tatarka.sres.Bindable.java
me.tatarka.sres.ChangeTracker.java
me.tatarka.sres.FileFilter.java
me.tatarka.sres.LayoutGenerator.java
me.tatarka.sres.LayoutParser.java
me.tatarka.sres.LayoutSelectorHelper.java
me.tatarka.sres.LayoutSelector.java
me.tatarka.sres.ListView.java
me.tatarka.sres.Main.java
me.tatarka.sres.ObservableAdapter.java
me.tatarka.sres.ObservableArrayList.java
me.tatarka.sres.ObservableListViewHelper.java
me.tatarka.sres.ObservableList.java
me.tatarka.sres.ObservablePagerAdapter.java
me.tatarka.sres.SResBaseVisitor.java
me.tatarka.sres.SResLexer.java
me.tatarka.sres.SResOutput.java
me.tatarka.sres.SResParser.java
me.tatarka.sres.SResVisitor.java
me.tatarka.sres.SRes.java
me.tatarka.sres.SourceInfo.java
me.tatarka.sres.ThreadHandlerImpl.java
me.tatarka.sres.ThreadHandlerProvider.java
me.tatarka.sres.ThreadHandler.java
me.tatarka.sres.Trackable.java
me.tatarka.sres.ViewPager.java
me.tatarka.sres.ast.Attribute.java
me.tatarka.sres.ast.Binding.java
me.tatarka.sres.ast.Child.java
me.tatarka.sres.ast.Converter.java
me.tatarka.sres.ast.Include.java
me.tatarka.sres.ast.RootView.java
me.tatarka.sres.ast.View.java
me.tatarka.sres.idea.SResFileTypeFactory.java
me.tatarka.sres.idea.SResFileType.java
me.tatarka.sres.idea.SResFile.java
me.tatarka.sres.idea.SResIcons.java
me.tatarka.sres.idea.SResLanguage.java
me.tatarka.sres.idea.SResLexer.java
me.tatarka.sres.idea.SResParserDefinition.java
me.tatarka.sres.idea._SResLexer.java
me.tatarka.sres.idea.psi.SResElementType.java
me.tatarka.sres.idea.psi.SResTokenType.java
me.tatarka.sres.impl.SResCodeLayoutGenerator.java
me.tatarka.sres.impl.SResLayoutParser.java
me.tatarka.sres.impl.SResVisitor.java
me.tatarka.sres.impl.SResXmlLayoutGenerator.java
me.tatarka.sres.impl.WriterCodeWriter.java
me.tatarka.sres.property.BooleanProperty.java
me.tatarka.sres.property.ByteProperty.java
me.tatarka.sres.property.CharProperty.java
me.tatarka.sres.property.DoubleProperty.java
me.tatarka.sres.property.FloatProperty.java
me.tatarka.sres.property.IntProperty.java
me.tatarka.sres.property.LongProperty.java
me.tatarka.sres.property.Property.java
me.tatarka.sres.property.ShortProperty.java
me.tatarka.sres.sample.MainActivity.java
me.tatarka.sres.sample.MyListItemView.java
me.tatarka.sres.sample.MyListItem.java
me.tatarka.sres.sample.MyMainView.java
me.tatarka.sres.sample.MyModel.java
me.tatarka.sres.sample.MyView.java
me.tatarka.sres.util.PathTransformer.java