6

ExpandableListView特定のグループ (groupPosition は既知で常に同じ) を展開不可に設定し、クリックすると新しいグループを開始する必要がありますActivity。それを行う方法はありますか?

アップデート

また、一度に 1 つのグループのみを展開する必要があり、次のことを試しました (ただし、これは正しく機能していません)。

  getExpandableListView().setOnGroupClickListener(
            new OnGroupClickListener() {
                @Override
                public boolean onGroupClick(ExpandableListView parent,
                        View v, int groupPosition, long id) {
                    if (groupPosition == 1) {
                        Toast.makeText(getApplicationContext(), "TEST",
                                Toast.LENGTH_SHORT).show();
                    } else if (groupPosition != lastExpandedGroupPosition) {
                        getExpandableListView().collapseGroup(
                                lastExpandedGroupPosition);
                    } else
                        getExpandableListView().expandGroup(groupPosition);
                    lastExpandedGroupPosition = groupPosition;

                    return true;
                }
            });
4

2 に答える 2

18

これでうまくいきます - onGroupClick で特別に処理したいグループをチェックし、それに対して true を返し、デフォルト アクション (展開/折りたたみ) で処理したいものに対して false を返します。

    mExpandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
        public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
            if(groupPosition == 2) {
                Toast.makeText(mContext, "Group 2 clicked", Toast.LENGTH_LONG).show();
                return true;
            } else
                return false;
        }
    });
于 2013-02-07T10:32:58.917 に答える
2

ExpandableListView に OnGroupClickListener を使用して、グループのクリックを制限できます。

更新しました

private int previousGroupPosition = -1;
private boolean isDoubleTap = false;    

expLv.setOnGroupClickListener(new OnGroupClickListener()
{
    @Override
    public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) 
    {
        if(previousGroupPosition != -1)
            expLvTodoCategories.collapseGroup(previousGroupPosition);

        if(previousGroupPosition != groupPosition || isDoubleTap)
        {
            isDoubleTap = false;
            previousGroupPosition = groupPosition;
            if(groupPosition == 1)
            {
                 //Start Activity
            }
            else
            {
                expLv.expandGroup(groupPosition);
            }
        }
        else
            isDoubleTap = true;

        return true;
    }
});

上記のコードを試してみてください。役に立つ場合があります..

于 2013-02-07T10:13:28.850 に答える