/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.view;
import android.content.Context;
import android.database.DataSetObserver;
import android.util.AttributeSet;
import android.view.ContextThemeWrapper;
import android.widget.Adapter;
import android.widget.ListAdapter;
import android.widget.ListView;
/**
*
* @author sihai
*
*/
public class EsListView extends ListView {
private final DataSetObserver mObserver;
public EsListView(Context context)
{
super(context);
mObserver = new EsListDataSetObserver();
}
public EsListView(Context context, AttributeSet attributeset)
{
super(wrapContextIfNeeded(context, attributeset), attributeset);
mObserver = new EsListDataSetObserver();
}
public EsListView(Context context, AttributeSet attributeset, int i)
{
super(wrapContextIfNeeded(context, attributeset), attributeset, i);
mObserver = new EsListDataSetObserver();
}
private static Context wrapContextIfNeeded(Context context, AttributeSet attributeset)
{
if(attributeset != null) {
int i = attributeset.getAttributeResourceValue(null, "theme", 0);
if(i != 0)
context = new ContextThemeWrapper(context, i);
}
return context;
}
protected final void adjustFastScroll()
{
if(isFastScrollEnabled())
{
setFastScrollEnabled(false);
setFastScrollEnabled(true);
int i = getWidth();
int j = getHeight();
onSizeChanged(i, j, i, j);
}
}
public void setAdapter(ListAdapter listadapter)
{
if(android.os.Build.VERSION.SDK_INT >= 11)
{
super.setAdapter(listadapter);
} else
{
ListAdapter listadapter1 = getAdapter();
if(listadapter1 != null)
listadapter1.unregisterDataSetObserver(mObserver);
if(listadapter != null)
listadapter.registerDataSetObserver(mObserver);
super.setAdapter(listadapter);
}
}
private class EsListDataSetObserver extends DataSetObserver {
public final void onChanged()
{
adjustFastScroll();
}
}
}