LIBBaseEntity.java 943 字节
package com.xdy.commonlibrary.adapter;
import java.lang.ref.SoftReference;
/**
 * 通过实体类,缓存ViewHolder的引用
 * 
 * @Description <LIBBaseEntity>
 * @author lixi
 * @date 2017年7月17日
 */public abstract class LIBBaseEntity {

	private SoftReference<LIBViewHolder> observer;

	public final void registerObserver(LIBViewHolder observer) {
		unregisterAll();
		this.observer = new SoftReference<LIBViewHolder>(observer);
	}

	public final LIBViewHolder getObserver() {
		if (null == observer) {
			return null;
		}
		return observer.get();
	}

	/**
	 * @return False ,entity is not visible
	 */
	public final boolean refresh() {
		LIBViewHolder holder = getObserver();
		if (null != holder && equals(holder.getTag())) {
			return holder.refresh();
		} else {
			unregisterAll();
			return false;
		}
	}

	private final void unregisterAll() {
		if (null != observer) {
			observer.clear();
		}
		this.observer = null;
	}
}