web-dev-qa-db-ja.com

ListActivityのListviewアイテムの長押しイベントをキャプチャする方法?

私がListActivityを持っていると仮定しましょう。今、リストアイテムで長押しイベントをキャッチしたいので、次のコードブロックを使用しましたが(googledの後に取得します)、機能しません!!!助けてください!

            public class InboxActivity extends ListActivity {

            this.getListView().setOnLongClickListener(new OnLongClickListener() {
                        @Override
                        public boolean onLongClick(View v) {
                            Toast.makeText(InboxActivity.this, "postion: " +    getListView().getSelectedItemPosition(), Toast.LENGTH_SHORT).show();
                            return true;
                        }
                    });

            }

また、contextmenuを使用してオンラインでいくつかのコードを表示していますが、contextmenuが開いている場所からlistItemの位置を取得する方法がありません。

28
saiket

あなたがすでにあなたの問題を解決したかどうかはわかりませんが、ほぼ確実に解決しましたが、これはうまくいきます

this.getListView().setLongClickable(true);
this.getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
    public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
        //Do some
        return true;
    }
});
61
user809486

this.getListView().setOnItemLongClickListenerが機能するはずです。

6
ACM64
    (viewitem).setOnLongClickListener(new OnItemLongClickListener() {           
        @Override
        public boolean onLongClick(View v) {
            //your code here
            return false;
        }
    }

(これは上記の回答とは少し異なります)

4
Idan

値を取得する方法を知りたいと思います。

listView.setOnItemLongClickListener(new OnItemLongClickListener() {
                    public boolean onItemLongClick(AdapterView parentView, View childView, int position, long id) {
                                            // this will provide the value
                        listView.getItemAtPosition(position)
                        return false;
                    }

                })
3
Dilberted