package com.quickblox.sample.chat.ui.widget;
import android.content.Context;
import android.database.DataSetObserver;
import android.os.Handler;
import android.os.Looper;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
public class AttachmentPreviewAdapterView extends HorizontalScrollView {
private static final Handler mainThreadHandler = new Handler(Looper.getMainLooper());
private LinearLayout container;
private Adapter adapter;
private DataSetObserver dataSetObserver;
public AttachmentPreviewAdapterView(Context context, AttributeSet attrs) {
super(context, attrs);
container = new LinearLayout(context);
container.setOrientation(LinearLayout.HORIZONTAL);
HorizontalScrollView.LayoutParams lp = new HorizontalScrollView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
addView(container, lp);
dataSetObserver = new DataSetObserver() {
@Override
public void onChanged() {
populateWithViewsFromAdapter();
}
@Override
public void onInvalidated() {
populateWithViewsFromAdapter();
}
};
}
public void setAdapter(Adapter newAdapter) {
if (adapter != null) {
adapter.unregisterDataSetObserver(dataSetObserver);
}
adapter = newAdapter;
adapter.registerDataSetObserver(dataSetObserver);
populateWithViewsFromAdapter();
}
private void populateWithViewsFromAdapter() {
mainThreadHandler.post(new Runnable() {
@Override
public void run() {
container.removeAllViews();
for (int i = 0; i < adapter.getCount(); i++) {
View childView = adapter.getView(i, null, AttachmentPreviewAdapterView.this);
container.addView(childView, i);
}
}
});
}
}