5

2 つのカーソルを使用して expandableList を取得しました。1 つはグループ用、もう 1 つはグループに関連する子用です。ユーザーは、この展開可能なリストでフィルター (alphaindexer) を使用できます。子がいない場合(アイコンだけでなく:))、グループビューを完全に削除したいと思います。空のグループの行を削除したようなものです。

bindgroupview メソッドで可視性をグーンに設定しようとしています。グループ ビューのレイアウトの高さを設定しようとしましたが、結果は同じで、スペースは維持され、表示されます。

それは可能ですか、どうすればこの機能を実行できますか?

以下のコード:

// mMapSeqArticle is TreeMap<Object, ArrayList<Object>)
mSequenceAdapter = new SequenceCommandeAdapter(getActivity(), mMapSeqArticle);

public class SequenceCommandeAdapter extends BaseExpandableListAdapter {
        Object[] mGroupSeq = null;
        Map<Sequence, ArrayList<TicketArticle>> mContent;

        public SequenceCommandeAdapter(Context c,
                Map<Sequence, ArrayList<TicketArticle>> map) {
            mContent = map;
            mGroupSeq = mContent.keySet().toArray();
        }

        @Override
        public Object getChild(int groupPosition, int childPosition) {
            Sequence s = (Sequence) mGroupSeq[groupPosition];
            return ((ArrayList<TicketArticle>) (mContent.get(s)))
                    .get(childPosition);
        }

        @Override
        public long getChildId(int groupPosition, int childPosition) {
            Sequence s = (Sequence) mGroupSeq[groupPosition];
            return ((ArrayList<TicketArticle>) (mContent.get(s)))
                    .get(childPosition).mId;
        }

        @Override
        public View getChildView(int groupPosition, int childPosition,
                boolean isLastChild, View convertView, ViewGroup parent) {
            // retrouve la valeur de la sequence
            TicketArticle ta = (TicketArticle) getChild(groupPosition,
                    childPosition);
            if (convertView == null) {
                convertView = LayoutInflater.from(getActivity()).inflate(
                        R.layout.adapter_row_article_details_table, null);
            }



            convertView.setTag(groupPosition + ":" + childPosition);
            return convertView;
        }

        @Override
        public int getChildrenCount(int groupPosition) {
            Sequence s = (Sequence) mGroupSeq[groupPosition];
            return ((ArrayList<TicketArticle>) (mContent.get(s))).size();
        }

        @Override
        public Object getGroup(int groupPosition) {
            return (Sequence) mGroupSeq[groupPosition];// mContent.get(groupPosition);
        }

        @Override
        public int getGroupCount() {
            return mContent.size();
        }

        @Override
        public long getGroupId(int groupPosition) {
            return ((Sequence) mGroupSeq[groupPosition]).key;
        }

        @Override
        public View getGroupView(int groupPosition, boolean isExpanded,
                View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = LayoutInflater.from(getActivity()).inflate(
                        R.layout.adapter_header_sequence_details_table, null);
            }


            convertView.setTag(null);
            return convertView;
        }

        @Override
        public boolean hasStableIds() {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public boolean isChildSelectable(int groupPosition, int childPosition) {
            // TODO Auto-generated method stub
            return true;
        }
    }
4

1 に答える 1

0

あなたのコードには bindGroupView メソッドがありませんが、あなたが説明したことから、正しい軌道に乗っているように思えます。グループ行が展開可能なリスト ビューから完全に消えるようにするには、すべてのサブ ビュー (レイアウトを含む) の可視性を GONE に設定する必要があります。それ以外の場合、空の行が残ります。

R.layout.adapter_header_sequence_details_table の内容を投稿すると、GONE を作成するために必要なその他のことがよくわかります。

于 2015-02-12T07:02:43.700 に答える