Example usage for android.widget ExpandableListView getExpandableListPosition

List of usage examples for android.widget ExpandableListView getExpandableListPosition

Introduction

In this page you can find the example usage for android.widget ExpandableListView getExpandableListPosition.

Prototype

public long getExpandableListPosition(int flatListPosition) 

Source Link

Document

Converts a flat list position (the raw position of an item (child or group) in the list) to a group and/or child position (represented in a packed position).

Usage

From source file:im.neon.util.VectorUtils.java

/**
 * Provides the visible child views.//from   w ww.  j a va  2s. co  m
 * The map key is the group position.
 * The map values are the visible child views.
 *
 * @param expandableListView the listview
 * @param adapter            the linked adapter
 * @return visible views map
 */
public static HashMap<Integer, List<Integer>> getVisibleChildViews(ExpandableListView expandableListView,
        BaseExpandableListAdapter adapter) {
    HashMap<Integer, List<Integer>> map = new HashMap<>();

    long firstPackedPosition = expandableListView
            .getExpandableListPosition(expandableListView.getFirstVisiblePosition());

    int firstGroupPosition = ExpandableListView.getPackedPositionGroup(firstPackedPosition);
    int firstChildPosition = ExpandableListView.getPackedPositionChild(firstPackedPosition);

    long lastPackedPosition = expandableListView
            .getExpandableListPosition(expandableListView.getLastVisiblePosition());

    int lastGroupPosition = ExpandableListView.getPackedPositionGroup(lastPackedPosition);
    int lastChildPosition = ExpandableListView.getPackedPositionChild(lastPackedPosition);

    for (int groupPos = firstGroupPosition; groupPos <= lastGroupPosition; groupPos++) {
        ArrayList<Integer> list = new ArrayList<>();

        int startChildPos = (groupPos == firstGroupPosition) ? firstChildPosition : 0;
        int endChildPos = (groupPos == lastGroupPosition) ? lastChildPosition
                : adapter.getChildrenCount(groupPos) - 1;

        for (int index = startChildPos; index <= endChildPos; index++) {
            list.add(index);
        }

        map.put(groupPos, list);
    }

    return map;
}

From source file:dev.drsoran.moloko.fragments.TaskListsFragment.java

@Override
public void onGroupIndicatorClicked(View groupView) {
    final ExpandableListView listView = getExpandableListView();
    final int pos = ExpandableListView
            .getPackedPositionGroup(listView.getExpandableListPosition(listView.getPositionForView(groupView)));

    if (listView.isGroupExpanded(pos))
        listView.collapseGroup(pos);/*from w  ww .j  av a  2 s  .c o  m*/
    else
        listView.expandGroup(pos);
}

From source file:com.jbirdvegas.mgerrit.PatchSetViewerFragment.java

private void init() {
    View currentFragment = this.getView();

    ExpandableListView mListView = (ExpandableListView) currentFragment.findViewById(R.id.commit_cards);
    disconnectedView = currentFragment.findViewById(R.id.disconnected_view);

    sIsLegacyVersion = !Config.isDiffSupported(mParent);

    mAdapter = new CommitDetailsAdapter(mParent);
    mListView.setAdapter(mAdapter);//from w  ww  . j av a 2  s  .co m

    // Child click listeners (relevant for the changes cards)
    mListView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
    mFilesCAB = new FilesCAB(mParent, !sIsLegacyVersion);
    mAdapter.setContextualActionBar(mFilesCAB);
    mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            ExpandableListView listView = (ExpandableListView) parent;
            long pos = listView.getExpandableListPosition(position);
            int groupPos = ExpandableListView.getPackedPositionGroup(pos);
            int childPos = ExpandableListView.getPackedPositionChild(pos);

            if (!mAdapter.isLongClickSupported(groupPos, childPos)) {
                return false;
            }

            // In case this is a group view and does not have the change number tagged
            view.setTag(R.id.changeID, mSelectedChange);
            FilesCAB.TagHolder holder = new FilesCAB.TagHolder(view, mContext, groupPos, childPos >= 0);

            // Set the title to be shown in the action bar
            if (holder.filePath != null) {
                mFilesCAB.setTitle(holder.filePath);
            } else {
                String s = mParent.getResources().getString(R.string.change_detail_heading);
                mFilesCAB.setTitle(String.format(s, holder.changeNumber.intValue()));
            }

            mFilesCAB.setActionMode(getActivity().startActionMode(mFilesCAB));
            ActionMode actionMode = mFilesCAB.getActionMode();

            // Call requires API 14 (ICS)
            actionMode.setTag(holder);
            view.setSelected(true);
            return true;
        }
    });
    mListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
        @Override
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition,
                long id) {
            // This is only valid for the changed files group
            int childItemType = mAdapter.getChildType(groupPosition, childPosition);
            if (childItemType != CommitDetailsAdapter.Cards.CHANGED_FILES.ordinal()) {
                return false;
            }
            // View the diff and close the CAB if a change diff could be viewed
            boolean diffLaunched = PatchSetChangesCard.onViewClicked(mParent, v);
            if (diffLaunched) {
                ActionMode mode = mFilesCAB.getActionMode();
                if (mode != null)
                    mode.finish();
            }
            return diffLaunched;
        }
    });

    mUrl = new GerritURL();

    Button retryButton = (Button) currentFragment.findViewById(R.id.btn_retry);
    retryButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (sIsLegacyVersion)
                sendRequest(GerritService.DataType.Commit);
            else
                sendRequest(GerritService.DataType.LegacyCommitDetails);
        }
    });

    if (getArguments() == null) {
        /** This should be the default value of {@link ChangeListFragment.mSelectedStatus } */
        setStatus(JSONCommit.Status.NEW.toString());
        loadChange(true);
    } else {
        Bundle args = getArguments();
        setStatus(args.getString(STATUS));
        String changeid = args.getString(CHANGE_ID);
        mChangeNumber = args.getInt(CHANGE_NO);

        if (changeid != null && !changeid.isEmpty()) {
            loadChange(changeid);
        }
    }

    mEventBus = EventBus.getDefault();
}