Android Open Source - AsymmetricGridView View Pool






From Project

Back to project page AsymmetricGridView.

License

The source code is released under:

MIT License

If you think the Android project AsymmetricGridView 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 com.felipecsl.asymmetricgridview.library.widget;
//from   w  w  w  .ja  va  2s .c o  m
import android.os.Parcel;
import android.os.Parcelable;
import android.view.View;

import java.util.Stack;

class ViewPool<T extends View> implements Parcelable {

    static class PoolStats {
        int size = 0;
        int hits = 0;
        int misses = 0;
        int created = 0;

        String getStats(String name) {
            return String.format("%s: size %d, hits %d, misses %d, created %d", name, size, hits,
                    misses, created);
        }
    }

    Stack<T> stack = new Stack<>();
    PoolObjectFactory<T> factory = null;
    PoolStats stats;

    ViewPool() {
        stats = new PoolStats();
    }

    ViewPool(PoolObjectFactory<T> factory) {
        this.factory = factory;
    }

    T get() {
        if (stack.size() > 0) {
            stats.hits++;
            stats.size--;
            return stack.pop();
        }

        stats.misses++;

        T object = factory != null ? factory.createObject() : null;

        if (object != null)
            stats.created++;

        return object;
    }

    void put(T object) {
        stack.push(object);
        stats.size++;
    }

    void clear() {
        stats = new PoolStats();
        stack.clear();
    }

    String getStats(String name) {
        return stats.getStats(name);
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(final Parcel dest, final int flags) {

    }
}




Java Source Code List

com.felipecsl.asymmetricgridview.app.MainActivity.java
com.felipecsl.asymmetricgridview.app.model.DemoItem.java
com.felipecsl.asymmetricgridview.app.widget.DefaultListAdapter.java
com.felipecsl.asymmetricgridview.app.widget.ListAdapterWrapper.java
com.felipecsl.asymmetricgridview.library.AsymmetricGridViewAdapterContract.java
com.felipecsl.asymmetricgridview.library.AsyncTaskCompat.java
com.felipecsl.asymmetricgridview.library.Utils.java
com.felipecsl.asymmetricgridview.library.model.AsymmetricItem.java
com.felipecsl.asymmetricgridview.library.widget.AnimatorProxy.java
com.felipecsl.asymmetricgridview.library.widget.AsymmetricGridViewAdapter.java
com.felipecsl.asymmetricgridview.library.widget.AsymmetricGridView.java
com.felipecsl.asymmetricgridview.library.widget.IcsColorDrawable.java
com.felipecsl.asymmetricgridview.library.widget.IcsLinearLayout.java
com.felipecsl.asymmetricgridview.library.widget.LinearLayoutPoolObjectFactory.java
com.felipecsl.asymmetricgridview.library.widget.NineLinearLayout.java
com.felipecsl.asymmetricgridview.library.widget.PoolObjectFactory.java
com.felipecsl.asymmetricgridview.library.widget.RowInfo.java
com.felipecsl.asymmetricgridview.library.widget.ViewPool.java