package info.guardianproject.securereaderinterface.widgets; import android.content.Context; import android.database.DataSetObserver; import android.util.AttributeSet; import android.view.View; import android.widget.LinearLayout; import android.widget.ListAdapter; public class AdapteredLinearLayout extends LinearLayout { private ListAdapter mAdapter; public AdapteredLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); init(); } public AdapteredLinearLayout(Context context) { super(context); init(); } private void init() { } private final DataSetObserver mChangeObserver = new DataSetObserver() { @Override public void onChanged() { rebuildViews(); } @Override public void onInvalidated() { AdapteredLinearLayout.this.removeAllViews(); } }; public void setAdapter(ListAdapter adapter) { if (mAdapter != null) mAdapter.unregisterDataSetObserver(mChangeObserver); mAdapter = adapter; if (mAdapter != null) mAdapter.registerDataSetObserver(mChangeObserver); rebuildViews(); } private void rebuildViews() { removeAllViews(); if (mAdapter != null) { for (int i = 0; i < mAdapter.getCount(); i++) { View child = mAdapter.getView(i, null, this); addView(child); } } } }