package com.bocai.widget; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; import android.database.DataSetObserver; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.widget.Adapter; import android.widget.LinearLayout; public class GroupedTableView extends LinearLayout { static final int ID_LIST_INDEX = 1812594688; private Adapter adapter = null; private DataSetObserver adapterDataSetObserver; private View.OnClickListener childOnClickListener; private Drawable divider; private int dividerResource = 17301524; private OnItemClickListener onItemClickListener; private int selectorBackgroundResource; public GroupedTableView(Context context) { super(context); adapter = null; dividerResource =0x1080014; this.divider = null; this.onItemClickListener = null; adapterDataSetObserver = new DataSetObserver() { public void onChanged() { Log.d("GroupedTableView", "data set changed!"); removeAllViews(); int k = adapter.getCount(); int l = 0; do { if(l >= k) return; GroupedTableView groupedTableView = GroupedTableView.this; View view = adapter.getView(l, null, groupedTableView); groupedTableView.addView(view); l++; } while(true); } public void onInvalidated() { Log.d("GroupedTableView", "data set invalidated!"); } }; android.view.View.OnClickListener onclicklistener = new android.view.View.OnClickListener() { public void onClick(View view) { if(onItemClickListener == null) { return; } else { int j = ((Integer)view.getTag(0x6c0a0000)).intValue(); onItemClickListener.onItemClick(GroupedTableView.this, view, j); return; } } }; childOnClickListener = onclicklistener; setOrientation(1); Resources localResources = context.getResources(); int i = this.dividerResource; Drawable localDrawable = localResources.getDrawable(i); divider = localDrawable; } public GroupedTableView(Context context, AttributeSet attributeSet) { super(context, attributeSet); adapter = null; divider = null; dividerResource = 0x1080014; onItemClickListener = null; DataSetObserver datasetobserver = new DataSetObserver() { public void onChanged() { Log.d("GroupedTableView", "data set changed!"); removeAllViews(); int j = adapter.getCount(); int l = 0; do { if(l >= j) return; GroupedTableView groupedTableView = GroupedTableView.this; View view = adapter.getView(l, null, groupedTableView); groupedTableView.addView(view); l++; } while(true); } public void onInvalidated() { Log.d("GroupedTableView", "data set invalidated!"); } }; this.adapterDataSetObserver = datasetobserver; childOnClickListener = new View.OnClickListener() { public void onClick(View view) { if(onItemClickListener == null){ return; } OnItemClickListener onitemclicklistener = onItemClickListener; GroupedTableView groupedtableview = GroupedTableView.this; int j = ((Integer)view.getTag(0x6c0a0000)).intValue(); onitemclicklistener.onItemClick(groupedtableview, view, j); return; } }; setOrientation(1); Resources localResources = context.getResources(); int i = this.dividerResource; Drawable localDrawable = localResources.getDrawable(i); this.divider = localDrawable; init(attributeSet); } private void init(AttributeSet paramAttributeSet) { Context localContext = getContext(); int[] arrayOfInt = ConstantR.styleable.GroupedTableView; TypedArray localTypedArray = localContext.obtainStyledAttributes(paramAttributeSet, arrayOfInt); int i = localTypedArray.getResourceId(0, 0); this.selectorBackgroundResource = i; localTypedArray.recycle(); int j = 0; int k = paramAttributeSet.getAttributeCount(); if (j >= k) return; String str = paramAttributeSet.getAttributeName(j); if (str.equals("listSelector")) { selectorBackgroundResource = paramAttributeSet.getAttributeResourceValue(j, 0); }else if (str.equals("divider")){ dividerResource = paramAttributeSet.getAttributeResourceValue(j, 0); Resources localResources = getContext().getResources(); divider = localResources.getDrawable(dividerResource); } } public void addView(View view) { int i = getChildCount(); if (i > 0) { Context localContext = getContext(); View localView = new View(localContext); localView.setBackgroundDrawable(divider); LinearLayout.LayoutParams layoutParams = getDividerLayoutParams(); super.addView(localView, layoutParams); i += 1; } LinearLayout.LayoutParams layoutParams2 = (LinearLayout.LayoutParams)view.getLayoutParams(); if (layoutParams2 == null) { layoutParams2 = generateDefaultLayoutParams(); if (layoutParams2 == null) throw new IllegalArgumentException("generateDefaultLayoutParams() cannot return null"); } super.addView(view, layoutParams2); Integer localInteger = Integer.valueOf(i >> 1); view.setTag(0x6c0a0000, localInteger); if (this.selectorBackgroundResource != 0) { int j = this.selectorBackgroundResource; view.setBackgroundResource(j); } if (!(view.isClickable())) return; View.OnClickListener localOnClickListener = this.childOnClickListener; view.setOnClickListener(localOnClickListener); } public void addView(View paramView, LinearLayout.LayoutParams paramLayoutParams) { int i = getChildCount(); if (i > 0) { Context localContext = getContext(); View localView = new View(localContext); Drawable localDrawable = this.divider; localView.setBackgroundDrawable(localDrawable); LinearLayout.LayoutParams localLayoutParams = getDividerLayoutParams(); super.addView(localView, localLayoutParams); i += 1; } super.addView(paramView, paramLayoutParams); Integer localInteger = Integer.valueOf(i >> 1); paramView.setTag(0x6c0a0000, localInteger); if (this.selectorBackgroundResource != 0) { int j = this.selectorBackgroundResource; paramView.setBackgroundResource(j); } if (!(paramView.isClickable())) return; View.OnClickListener localOnClickListener = this.childOnClickListener; paramView.setOnClickListener(localOnClickListener); } public Adapter getAdapter() { return this.adapter; } public LinearLayout.LayoutParams getDividerLayoutParams() { LinearLayout.LayoutParams localLayoutParams = new LinearLayout.LayoutParams(-1, 1, 0.0F); localLayoutParams.setMargins(0, 2, 0, 2); return localLayoutParams; } public void setAdapter(Adapter paramAdapter) { if (this.adapter != null) { Adapter localAdapter1 = this.adapter; DataSetObserver localDataSetObserver1 = this.adapterDataSetObserver; localAdapter1.unregisterDataSetObserver(localDataSetObserver1); } this.adapter = paramAdapter; if (this.adapter == null) return; int i = this.adapter.getCount(); int j = 0; while (j < i) { View localView = this.adapter.getView(j, null, this); addView(localView); j += 1; } Adapter localAdapter2 = this.adapter; DataSetObserver localDataSetObserver2 = this.adapterDataSetObserver; localAdapter2.registerDataSetObserver(localDataSetObserver2); } public void setDivider(Drawable paramDrawable) { this.divider = paramDrawable; } public void setOnItemClickListener(OnItemClickListener paramOnItemClickListener) { this.onItemClickListener = paramOnItemClickListener; } public void setSelectorBackgroundResource(int paramInt) { this.selectorBackgroundResource = paramInt; } public static abstract interface OnItemClickListener { public abstract void onItemClick(GroupedTableView paramGroupedTableView, View paramView, int paramInt); } }