1

CustomArrayAdapterのsetOnClickLisnterメソッドにメソッドがあります。getView

imageButton私がやりたいのは、の各行の内側を1回短くクリックするListViewだけで、ContextMenuを開くことです。

を長押しすると、現在ContextMenuが機能していますListView。次に、同じ機能を上記のショートクリックに移します。

私は私の中にこれを持っていますonCreate

registerForContextMenu(getListView());

onCreateContextMenuアクティビティ の中にもあります。私の主な質問は、内部からこれにどのようにアクセスするArrayAdapterかです。

編集:setOncLickListnerメソッド 内でこれを行う必要はありません。getView

getViewのコード:

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHolder holder;

        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        if (convertView == null) {

            convertView = inflater.inflate(R.layout.commentlayout, parent,
                    false);
            holder = new ViewHolder();
            holder.ib1 = (ImageButton) convertView
                    .findViewById(R.id.labelChatIcon);


            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
            convertView.setOnCreateContextMenuListener(null);
        }

        holder.ib1.setBackgroundColor(Color.TRANSPARENT);

        holder.ib1.setBackgroundColor(Color.TRANSPARENT);
        holder.ib1.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                // Open Context Menu here

            }
        });

        return convertView;
    }

更新:計画を変更していると思います。ラジオボタン付きのアラートダイアログを使用します。この状況では、コンテキストメニューはおそらく適切ではありません。

4

3 に答える 3

1

コンテキストメニューの代わりにAlert.Builderを使用できます。を使用して、カスタムビューを追加できます。 builder.setView(View v);

幅の異なるボタンの束を含むレイアウトファイルがあります:match_parent。利用可能なすべての異なるオプションについては、このリンクをチェックしてください

于 2013-01-07T03:24:55.370 に答える
0

このリンクをたどるhttp://developer.android.com/guide/topics/ui/menus.html

と使用

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


@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    switch (item.getItemId()) {
        case R.id.edit:
            editNote(info.id);
            return true;
        case R.id.delete:
            deleteNote(info.id);
            return true;
        default:
            return super.onContextItemSelected(item);
    }
}
于 2013-01-07T03:50:19.620 に答える
0

質問は古いですが、他の誰かがそれを必要とする場合に備えて:コンテキストメニューを直接開くことはできません。ただし、それに応じたビューでロングクリックを実行できます。これにより、コンテキストメニューが開きます。あなたの場合:

holder.ib1.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                // Open Context Menu here
                convertView.performLongClick();
            }
        });

ただし、必要なのはAndroidの設計ガイドラインに準拠していないことに注意してください。ロングクリックは、通常のクリックではなく、コンテキストメニューを開くことになっています。

于 2016-01-11T20:49:09.873 に答える