我有两种布局。我想将它们添加到ExpandableListView编程中。当我尝试使用始终为NullpointException的getTag时,我曾尝试使用ViewHolder.But设置setTag。这是我的代码:
SeekBarHolder sh=null;
TickHolder th=null;
if(convertView==null){
switch((Integer)childData.get(groupPosition).get(childPosition).get("type")){
case ProtocolConst.EXPANDABLE_CHILD_TYPE_SEEKBAR:
sh=new SeekBarHolder();
convertView=inflater.inflate(R.layout.fragment_left_listview_child_seekbar_item, null);
sh.text=(TextView)convertView.findViewById(R.id.Left_ExpandableListView_Child_SeekBar_TextView);
sh.seekbar=(SeekBar)convertView.findViewById(R.id.Left_ExpandableListView_Child_SeekBar_SeekBar);
convertView.setTag(sh);
case ProtocolConst.EXPANDABLE_CHILD_TYPE_TICK:
th=new TickHolder();
convertView=inflater.inflate(R.layout.fragment_left_listview_child_seekbar_item, null);
th.text=(TextView)convertView.findViewById(R.id.Left_ExpandableListView_Child_Tick_TextView);
th.tick=(ImageView)convertView.findViewById(R.id.Left_ExpandableListView_Child_Tick_ImageView);
convertView.setTag(th);
}}else{
switch((Integer)childData.get(groupPosition).get(childPosition).get("type")){
case ProtocolConst.EXPANDABLE_CHILD_TYPE_SEEKBAR:
sh=(SeekBarHolder)convertView.getTag();
break;
case ProtocolConst.EXPANDABLE_CHILD_TYPE_TICK:
th=(TickHolder)convertView.getTag();
break;
}
}
答案 0 :(得分:1)
您应该为addapter添加其他方法。适配器以其他方式使用不同的布局。使用mehod getViewTypeCount(){告诉适配器你将使用多少个视图和getItemViewType(int position)来在getViewMethod中的视图之间切换。
另外,对于ExpadnableListView,您应该使用其他方法,这些方法允许您使用为列表添加其他布局。
答案 1 :(得分:0)
如果您使用的是ExpandableListView
,那么您应该使用BaseExpandableListAdapter,其 getChildView (int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent)和getGroupView (int groupPosition, boolean isExpanded, View convertView, ViewGroup parent)方法允许您为群组和子级分隔单独的布局。这是tutorials