1

ExpandableList を長くクリックすると、グループごとにメニューが表示されます。ただし、現時点では、ロングクリックすると空でないグループのみが青色の背景を表示し、選択可能になります。空のグループはすべて長いクリックに反応しません。

registerForContextMenu(list) を使用してリストをフラグメントに登録し、次のコードを記述しました。

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    MenuInflater inflater = getActivity().getMenuInflater();
    inflater.inflate(R.menu.item_task_long_click_menu, menu);
}

@Override
public boolean onContextItemSelected( android.view.MenuItem item) {
    ExpandableListContextMenuInfo info = (ExpandableListView.ExpandableListContextMenuInfo) item.getMenuInfo();

    switch(item.getItemId()) {
        case R.id.itlcm_menu_edit:
            //do something
            break;  
        case R.id.itlcm_menu_remove:
            //do something
            break;
    }
    return true;
}

私が設定したアダプタで:

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
    return false;
}

空のグループが選択できないのはなぜですか? それを変更する方法が見つかりませんでした...

編集:私はそれだと思います

registerForContextMenu(list)

たぶん、子供がいないグループは長いクリックに登録されていません....

誰か?

4

1 に答える 1

1

解決できました。

問題は registerForContextMenu() ではありませんでした。問題は、GroupViews (getGroup(...)) に 2 つの異なるビューを使用したカスタム ExpandableListAdapter でした。クリックにまったく反応しなかったものには、GroupView 全体のフォーカスをオーバーライドする CheckBox が含まれていました。だから私は追加しました:

android:focusable="false" 

XML と出来上がりの CheckBox に、CheckBox を持つ GroupView がクリックに反応しました。

于 2012-11-30T09:25:38.830 に答える