如何在BaseAdapter中添加不同的布局?

时间:2013-09-23 10:51:30

标签: android expandablelistview baseadapter

我有两种布局。我想将它们添加到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;
            }
}

2 个答案:

答案 0 :(得分:1)

您应该为addapter添加其他方法。适配器以其他方式使用不同的布局。使用mehod getViewTypeCount(){告诉适配器你将使用多少个视图和getItemViewType(int position)来在getViewMethod中的视图之间切换。

另外,对于ExpadnableListView,您应该使用其他方法,这些方法允许您使用为列表添加其他布局。

答案 1 :(得分:0)