/* * Copyright 2015 "Henry Tao <hi@henrytao.me>" * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.stfalcon.frescoimageviewer.adapter; import android.os.Bundle; import android.os.Parcelable; import android.util.SparseArray; import android.view.View; import android.view.ViewGroup; /* * Created by henrytao on 11/13/15. */ public abstract class ViewHolder { private static final String STATE = ViewHolder.class.getSimpleName(); public final View itemView; boolean mIsAttached; int mPosition; public ViewHolder(View itemView) { if (itemView == null) { throw new IllegalArgumentException("itemView should not be null"); } this.itemView = itemView; } void attach(ViewGroup parent, int position) { mIsAttached = true; mPosition = position; parent.addView(itemView); } void detach(ViewGroup parent) { parent.removeView(itemView); mIsAttached = false; } void onRestoreInstanceState(Parcelable state) { if (state instanceof Bundle) { Bundle bundle = (Bundle) state; SparseArray<Parcelable> ss = bundle.containsKey(STATE) ? bundle.getSparseParcelableArray(STATE) : null; if (ss != null) { itemView.restoreHierarchyState(ss); } } } Parcelable onSaveInstanceState() { SparseArray<Parcelable> state = new SparseArray<>(); itemView.saveHierarchyState(state); Bundle bundle = new Bundle(); bundle.putSparseParcelableArray(STATE, state); return bundle; } }