1

ExpandableListActivityを登録しましたContextMenu。私がやろうとしているのContextMenuは、押されたグループの子リスト項目のデータを保存することです。によると:

onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo)

vコンテキスト メニューが構築されているビューです。したがって、このビューはクリックしたリスト項目のビューである必要がありますが、そうではなく、子リストの最初のリスト項目を参照しています。コンテキスト メニューが作成されたリスト項目のビューを返す必要があると思いますが、ここではそうではありません。これが私のコードです:

public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        menu.setHeaderTitle("My Crumbs");

        TextView rowid = (TextView) v
                .findViewById(R.id.trackdetails_item_row_id);
        rowId = rowid.getText().toString();

        ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) menuInfo;
        int type = ExpandableListView
                .getPackedPositionType(info.packedPosition);

        // Only create a context menu for the child
        if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {

            TextView trackstats = (TextView) v
                    .findViewById(R.id.trackdetails_item_stats);
    menu.add(0, MENU_SHARE, 0, "Share on Facebook");
        }

    }

誰かがこれに光を当てることができますか?

編集:

のコードExpandableListAdapter:

public class MyExpandableListAdapter extends SimpleCursorTreeAdapter {

        public MyExpandableListAdapter(Cursor cursor, Context context,
                int groupLayout, int childLayout, String[] groupFrom,
                int[] groupTo, String[] childrenFrom, int[] childrenTo) {
            super(context, cursor, groupLayout, groupFrom, groupTo,
                    childLayout, childrenFrom, childrenTo);
            setViewBinder(viewBinder);
        }

        @Override
        protected Cursor getChildrenCursor(Cursor groupCursor) {
            // TODO Auto-generated method stub
            String crumbName = groupCursor.getString(mCrumbNameColumnIndex);
            return crumpareDBAdapter.getTrackList(mTracksProjection, crumbName);
        }

        @Override
        public SimpleCursorTreeAdapter.ViewBinder getViewBinder() {
            return viewBinder;
        }

    }

のコードViewBinder:

SimpleCursorTreeAdapter.ViewBinder viewBinder = new ViewBinder() {

        @Override
        public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
            // TODO Auto-generated method stub
         TextView textView = (TextView) view;
         textView.setText(cursor.getString(columnIndex));
            return true;
        }
    };
4

1 に答える 1

1

ビューに依存するのではなく、ContextMenuInfo から子の ID をフェッチすることもできます。必要なものが含まれているはずなので、ドキュメントを参照してください。

于 2011-04-30T12:45:07.217 に答える