package io.itch.activities; import io.itch.ItchApp; import io.itch.R; import android.app.Activity; import android.view.LayoutInflater; import android.view.View; import android.widget.ListView; import android.widget.TextView; import com.google.android.gms.analytics.HitBuilders; import com.google.android.gms.analytics.Tracker; abstract class BaseActivity extends Activity { public View getEmptyView() { View result = LayoutInflater.from(this).inflate(R.layout.activity_empty, null); TextView message = (TextView) result.findViewById(R.id.textViewEmptyMessage); if (message != null) { message.setText(getEmptyViewMessageId()); } return result; } public int getEmptyViewMessageId() { return R.string.activity_empty_default; } @Override protected void onStart() { super.onStart(); Tracker t = ((ItchApp) this.getApplication()).getTracker(); t.setScreenName(getScreenPath()); t.send(new HitBuilders.AppViewBuilder().build()); } protected ScrollPosition preserveScroll(ListView list) { int index = list.getFirstVisiblePosition(); View v = list.getChildAt(0); int top = (v == null) ? 0 : v.getTop(); return new ScrollPosition(index, top); } protected void restoreScroll(ListView list, ScrollPosition position) { list.setSelectionFromTop(position.getIndex(), position.getTop()); } protected abstract String getScreenPath(); protected static final class ScrollPosition { private final Integer index; private final Integer top; private ScrollPosition(Integer index, Integer top) { super(); this.index = index; this.top = top; } public Integer getIndex() { return index; } public Integer getTop() { return top; } } }