/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.view;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.AbsListView;
import android.widget.ListView;
import com.galaxy.meetup.client.android.ui.fragments.SettableItemAdapter;
import com.galaxy.meetup.client.android.ui.view.OneUpBaseView.OnMeasuredListener;
/**
*
* @author sihai
*
*/
public class StreamOneUpListView extends ListView implements OnMeasuredListener {
private int mMaxWidth;
private OneUpBaseView.OnMeasuredListener mOnMeasuredListener;
private android.widget.AbsListView.OnScrollListener listener = new android.widget.AbsListView.OnScrollListener() {
public final void onScroll(AbsListView abslistview, int i, int j, int k)
{
}
public final void onScrollStateChanged(AbsListView abslistview, int i)
{
if(i != 0)
{
int j = 0;
for(int k = abslistview.getChildCount(); j < k; j++)
{
View view = abslistview.getChildAt(j);
if(view instanceof StreamOneUpCommentView)
((StreamOneUpCommentView)view).cancelPressedState();
}
}
}
};
public StreamOneUpListView(Context context)
{
super(context);
mMaxWidth = -1;
setOnScrollListener(listener);
}
public StreamOneUpListView(Context context, AttributeSet attributeset)
{
super(context, attributeset);
mMaxWidth = -1;
setOnScrollListener(listener);
}
public StreamOneUpListView(Context context, AttributeSet attributeset, int i)
{
super(context, attributeset, i);
mMaxWidth = -1;
setOnScrollListener(listener);
}
protected void layoutChildren()
{
super.layoutChildren();
SettableItemAdapter settableitemadapter = (SettableItemAdapter)getAdapter();
if(settableitemadapter != null)
{
int i = getFirstVisiblePosition();
int j = -1 + getChildCount();
while(j >= 0)
{
settableitemadapter.setItemHeight(i + j, getChildAt(j).getMeasuredHeight());
j--;
}
}
}
protected void onMeasure(int i, int j)
{
super.onMeasure(i, j);
if(mMaxWidth > 0 && getMeasuredWidth() > mMaxWidth)
super.onMeasure(android.view.View.MeasureSpec.makeMeasureSpec(mMaxWidth, 0x40000000), j);
if(mOnMeasuredListener != null)
mOnMeasuredListener.onMeasured(this);
}
public final void onMeasured(View view)
{
int i = -1;
int j = -1 + getChildCount();
for(; j >= 0; j--) {
if(getChildAt(j).equals(view)) {
i = j;
break;
}
}
if(i >= 0)
{
int k = i + getFirstVisiblePosition();
SettableItemAdapter settableitemadapter = (SettableItemAdapter)getAdapter();
if(settableitemadapter != null)
settableitemadapter.setItemHeight(k, view.getMeasuredHeight());
}
}
public void setMaxWidth(int i)
{
mMaxWidth = i;
}
public void setOnMeasureListener(OneUpBaseView.OnMeasuredListener onmeasuredlistener)
{
mOnMeasuredListener = onmeasuredlistener;
}
}