package com.bocai.widget;
import android.database.DataSetObserver;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;
import java.util.ArrayList;
import java.util.Iterator;
import com.bocai.R;
public class HeaderViewListAdapter
implements WrapperListAdapter, Filterable
{
public HeaderViewListAdapter(ArrayList<FixedViewInfo> arraylist, ArrayList<FixedViewInfo> arraylist1, ListAdapter listadapter)
{
mAdapter = listadapter;
mIsFilterable = listadapter instanceof Filterable;
if(arraylist == null)
{
mHeaderViewInfos = EMPTY_INFO_LIST;
} else
{
mHeaderViewInfos = arraylist;
}
if(arraylist1 == null)
{
mFooterViewInfos = EMPTY_INFO_LIST;
} else
{
mFooterViewInfos = arraylist1;
}
if(!areAllListInfosSelectable(mHeaderViewInfos)) {
mAreAllFixedViewsSelectable = false;
return;
} else {
if(!areAllListInfosSelectable(mFooterViewInfos)) {
mAreAllFixedViewsSelectable = false;
return;
} else {
mAreAllFixedViewsSelectable = true;
return;
}
}
}
private boolean areAllListInfosSelectable(ArrayList<FixedViewInfo> arraylist)
{
if(arraylist == null) {
return true;
} else {
Iterator<FixedViewInfo> iterator = arraylist.iterator();
while (iterator.hasNext()) {
if(!iterator.next().isSelectable) {
return false;
}
}
return true;
}
}
public boolean areAllItemsEnabled()
{
boolean flag;
if(mAdapter != null)
{
if(mAreAllFixedViewsSelectable && mAdapter.areAllItemsEnabled())
flag = true;
else
flag = false;
} else
{
flag = true;
}
return flag;
}
public int getCount()
{
int i1;
if(mAdapter != null)
{
int i = getFootersCount();
int j = getHeadersCount();
int k = i + j;
int l = mAdapter.getCount();
i1 = k + l;
} else
{
int j1 = getFootersCount();
int k1 = getHeadersCount();
i1 = j1 + k1;
}
return i1;
}
public Filter getFilter()
{
Filter filter;
if(mIsFilterable)
filter = ((Filterable)mAdapter).getFilter();
else
filter = null;
return filter;
}
public int getFootersCount()
{
return mFooterViewInfos.size();
}
public int getHeadersCount()
{
return mHeaderViewInfos.size();
}
public Object getItem(int i)
{
int j = getHeadersCount();
while (true) {
if(i >= j) {
int k = i - j;
int l = 0;
if(mAdapter != null)
{
l = mAdapter.getCount();
if(k < l)
{
mAdapter.getItem(k);
continue;
}
}
int i1 = k - l;
return ((FixedViewInfo)mFooterViewInfos.get(i1)).data;
} else {
return ((FixedViewInfo)mHeaderViewInfos.get(i)).data;
}
}
}
public long getItemId(int i)
{
int j = getHeadersCount();
if(mAdapter == null || i < j) {
return 65535L;
}
int k;
int l;
k = i - j;
l = mAdapter.getCount();
if(k >= l) {
return 65535L;
}
return mAdapter.getItemId(k);
}
public int getItemViewType(int i)
{
int j = getHeadersCount();
if(mAdapter == null || i < j) {
return -1;
}
int k;
int l;
k = i - j;
l = mAdapter.getCount();
if(k >= l) {
return -1;
}
return mAdapter.getItemViewType(k);
}
public View getView(int i, View view, ViewGroup viewgroup)
{
int j = getHeadersCount();
while(true) {
if (i >= j) {
int k = i - j;
int l = 0;
if(mAdapter != null)
{
l = mAdapter.getCount();
if(k < l)
{
Log.i("HeaderViewListAdapter", "%%%%%%%%% i, j, k " + i + "," + j + "," + k);
View view1 = mAdapter.getView(k, view, viewgroup);
Log.i("HeaderViewListAdapter", "!!!!!!!!!!!!!!!! view.getTag(R.id.key_objects) " + view1.getTag(R.id.key_objects));
return view1;
//TODO: temprorily by lifeng
}
}
int i1 = k - l;
return ((FixedViewInfo)mFooterViewInfos.get(i1)).view;
} else {
return ((FixedViewInfo)mHeaderViewInfos.get(i)).view;
}
}
}
public int getViewTypeCount()
{
int i;
if(mAdapter != null)
i = mAdapter.getViewTypeCount();
else
i = 1;
return i;
}
public ListAdapter getWrappedAdapter()
{
return mAdapter;
}
public boolean hasStableIds()
{
boolean flag;
if(mAdapter != null)
flag = mAdapter.hasStableIds();
else
flag = false;
return flag;
}
public boolean isEmpty()
{
boolean flag;
if(mAdapter == null || mAdapter.isEmpty())
flag = true;
else
flag = false;
return flag;
}
public boolean isEnabled(int i)
{
int j = getHeadersCount();
while (true) {
if(i >= j) {
int k = i - j;
int l = 0;
if(mAdapter != null)
{
l = mAdapter.getCount();
if(k < l)
{
mAdapter.isEnabled(k);
continue;
}
}
int i1 = k - l;
return ((FixedViewInfo)mFooterViewInfos.get(i1)).isSelectable;
} else {
return ((FixedViewInfo)mHeaderViewInfos.get(i)).isSelectable;
}
}
}
public void registerDataSetObserver(DataSetObserver datasetobserver)
{
if(mAdapter == null)
{
return;
} else
{
mAdapter.registerDataSetObserver(datasetobserver);
return;
}
}
public boolean removeFooter(View view)
{
int i = 0;
while(true) {
int j = mFooterViewInfos.size();
if(i >= j) {
break;
}
if(((FixedViewInfo)mFooterViewInfos.get(i)).view != view) {
i++;
} else {
mFooterViewInfos.remove(i);
if(!areAllListInfosSelectable(mHeaderViewInfos)) {
mAreAllFixedViewsSelectable = false;
return true;
} else {
if(!areAllListInfosSelectable(mFooterViewInfos)) {
mAreAllFixedViewsSelectable = false;
return true;
} else {
return true;
}
}
}
}
return false;
}
public boolean removeHeader(View view)
{
int i = 0;
while(true) {
int j = mHeaderViewInfos.size();
if (i >= j) {
break;
}
if(((FixedViewInfo)mHeaderViewInfos.get(i)).view != view) {
i++;
} else {
mHeaderViewInfos.remove(i);
if(!areAllListInfosSelectable(mHeaderViewInfos)) {
mAreAllFixedViewsSelectable = false;
return true;
}
if(!areAllListInfosSelectable(mFooterViewInfos)) {
mAreAllFixedViewsSelectable = false;
return true;
}
return true;
}
}
return false;
}
public void unregisterDataSetObserver(DataSetObserver datasetobserver)
{
if(mAdapter == null)
{
return;
} else
{
mAdapter.unregisterDataSetObserver(datasetobserver);
return;
}
}
static final ArrayList<FixedViewInfo> EMPTY_INFO_LIST = new ArrayList<FixedViewInfo>();
private final ListAdapter mAdapter;
boolean mAreAllFixedViewsSelectable;
ArrayList<FixedViewInfo> mFooterViewInfos;
ArrayList<FixedViewInfo> mHeaderViewInfos;
private final boolean mIsFilterable;
}