0

私は 2 種類のレイアウトを持っています。それらを ExpandableListView プログラミングに追加したいと思います。ViewHolder で setTag を試みました。しかし、常に NullpointException である getTag を試みました。これが私のコードです:

        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;
            }
}
4

2 に答える 2

1

アダプタに追加のメソッドを実装する必要があります。アダプターは別の方法で別のレイアウトを使用しています。メソッド getViewTypeCount() { を使用してアダプタに使用するビューの数を伝え、getItemViewType(int position) を使用して getViewMethod でビューを切り替えます。

さらに、 ExpadnableListView の場合は、リストに他のレイアウトを追加できるようにする他のメソッドを使用する必要があります。

于 2013-09-23T10:59:42.283 に答える
0

ExpandableListView使用している場合は、メソッド getChildView(int groupPosition 、int childPosition、boolean isLastChild、View convertView、ViewGroup parent)およびgetGroupView(int groupPosition、boolean isExpanded、View convertView、ViewGroup parent)を持つBaseExpandableListAdapterを使用する必要があります。グループと子供用のレイアウト。これはチュートリアルの1つです

于 2013-09-23T10:58:46.023 に答える