package com.ab.view.expandtabview; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.util.AttributeSet; import android.view.View; import android.widget.LinearLayout; import android.widget.ListView; import com.ab.model.AbMenuItem; public class AbTabView2 extends LinearLayout{ private ListView listView1; private ListView listView2; private AbTabListAdapter listViewAdapter1; private AbTabListAdapter listViewAdapter2; private List<AbMenuItem> groups; private List<ArrayList<AbMenuItem>> childrens; /**当前显示的分类2*/ private List<AbMenuItem> childrenItem = new ArrayList<AbMenuItem>(); private OnItemSelectListener mOnItemSelectListener; private int selectGroupResId, selectorGroupResId; private int selectChildrenResId, selectorChildrenResId; private int defaultGroupId = -1; private int defaultChildrenId = -1; private int defaultGroupPosition = 0; private int defaultChildrenPosition = 0; private String showString; public AbTabView2(Context context,List<AbMenuItem> groups,List<ArrayList<AbMenuItem>> childrens,int defaultGroupId,int defaultChildrenId,int selectGroupResId, int selectorGroupResId,int selectChildrenResId, int selectorChildrenResId) { super(context); this.groups = groups; this.childrens = childrens; this.selectGroupResId = selectGroupResId; this.selectorGroupResId = selectorGroupResId; this.selectChildrenResId = selectChildrenResId; this.selectorChildrenResId = selectorChildrenResId; init(context); } public AbTabView2(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public void updateShowText(int groupId, int childId) { if (groupId == -1 || childId == -1) { return; } for (int i = 0; i < groups.size(); i++) { if (groups.get(i).getId() == groupId) { listViewAdapter1.setSelectedPosition(i); childrenItem.clear(); if (i < childrens.size()) { childrenItem.addAll(childrens.get(i)); } defaultGroupPosition = i; break; } } for (int j = 0; j < childrenItem.size(); j++) { if (childrenItem.get(j).getId()==childId) { listViewAdapter2.setSelectedPosition(j); defaultChildrenPosition = j; break; } } if (defaultChildrenPosition < childrenItem.size()){ showString = childrenItem.get(defaultChildrenPosition).getText(); } setDefaultSelect(); } private void init(Context context) { this.setOrientation(LinearLayout.HORIZONTAL); listView1 = new ListView(context); listView1.setCacheColorHint(Color.parseColor("#00000000")); listView1.setDivider(new ColorDrawable(Color.parseColor("#D3D3D3"))); listView1.setDividerHeight(1); listView1.setHorizontalScrollBarEnabled(false); listView1.setVerticalScrollBarEnabled(false); this.addView(listView1,new LayoutParams(0,LayoutParams.MATCH_PARENT,1)); View line = new View(context); line.setBackgroundColor(Color.parseColor("#ebebeb")); this.addView(line,new LayoutParams(1,LayoutParams.MATCH_PARENT)); listView2 = new ListView(context); listView2.setCacheColorHint(Color.parseColor("#00000000")); listView2.setDivider(new ColorDrawable(Color.parseColor("#D3D3D3"))); listView2.setDividerHeight(1); listView2.setHorizontalScrollBarEnabled(false); listView2.setVerticalScrollBarEnabled(false); this.addView(listView2,new LayoutParams(0,LayoutParams.MATCH_PARENT,1 )); listViewAdapter1 = new AbTabListAdapter(context, groups,selectGroupResId,selectorGroupResId); if (defaultGroupId != -1) { for (int i = 0; i < groups.size(); i++) { if (groups.get(i).getId()== defaultGroupId) { listViewAdapter1.setSelectedPositionNoNotify(i); break; } } } listView1.setAdapter(listViewAdapter1); listViewAdapter1.setOnItemClickListener(new AbTabListAdapter.OnItemClickListener() { @Override public void onItemClick(View view, int position) { if (position < groups.size()) { childrenItem.clear(); if(childrens.size() > position){ childrenItem.addAll(childrens.get(position)); } listViewAdapter2.notifyDataSetChanged(); } } }); if (defaultGroupId != -1) { for (int i = 0; i < groups.size(); i++) { if (groups.get(i).getId()== defaultGroupId) { listViewAdapter1.setSelectedPositionNoNotify(i); defaultGroupPosition = i; break; } } } if (defaultChildrenId != -1) { if(defaultGroupId==-1){ }else{ for (int i = 0; i < childrens.get(defaultGroupPosition).size(); i++) { if (childrens.get(i).get(defaultGroupPosition).getId()== defaultChildrenId) { defaultChildrenPosition = i; break; } } } } if (defaultChildrenPosition < childrens.size()){ childrenItem.addAll(childrens.get(defaultChildrenPosition)); } listViewAdapter2 = new AbTabListAdapter(context, childrenItem,selectChildrenResId,selectorChildrenResId); listViewAdapter2.setSelectedPositionNoNotify(defaultChildrenPosition); listView2.setAdapter(listViewAdapter2); listViewAdapter2.setOnItemClickListener(new AbTabListAdapter.OnItemClickListener() { @Override public void onItemClick(View view, final int position) { showString = childrenItem.get(position).getText(); if (mOnItemSelectListener != null) { mOnItemSelectListener.itemSelected(position); } } }); if (defaultChildrenPosition < childrenItem.size()){ showString = childrenItem.get(defaultChildrenPosition).getText(); } setDefaultSelect(); } public void setDefaultSelect() { listView1.setSelection(defaultGroupPosition); listView2.setSelection(defaultChildrenPosition); } public String getShowText() { return showString; } public void setOnItemSelectListener(OnItemSelectListener onItemSelectListener) { mOnItemSelectListener = onItemSelectListener; } public interface OnItemSelectListener { public void itemSelected(int position); } public void notifyDataSetChangedGroup(){ listViewAdapter1.notifyDataSetChanged(); } public void notifyDataSetChangedChildren(){ listViewAdapter2.notifyDataSetChanged(); } }