如何长按listView中的单击

时间:2013-12-12 10:37:08

标签: android listview

如何制作长按处理程序以打开菜单?我有这个适配器,然后单击监听器:

protected void onListItemClick(ListView l, View v, int position, long id) {
    int selectionRowID = position;
    String selectedFileString = this.directoryEntries.get(selectionRowID);
    File clickedFile = new File(selectedFileString);
    if (clickedFile != null)
        this.go(clickedFile);
}

ArrayAdapter<String> adapter  =  new ArrayAdapter<String>(this, R.layout.row, this.directoryName);
this.setListAdapter(adapter);

但是,我不知道如何做长听众。帮助我,伙计们:(

添加xml:

 <ListView
        android:id="@id/android:list"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:longClickable="true"

        android:layout_weight="2"

        android:drawSelectorOnTop="false"
                                            />

4 个答案:

答案 0 :(得分:1)

listview.setOnItemLongClickListener(new OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                // TODO Auto-generated method stub
                return false;
            }
        });

答案 1 :(得分:0)

在您的Activity中,您必须覆盖onCreateContextMenu

来自documentation

  

在Activity或中实现onCreateContextMenu()方法   分段。当注册视图收到长按事件时,   系统调用onCreateContextMenu()方法。这就是你的地方   定义菜单项,通常是通过膨胀菜单资源。

答案 2 :(得分:0)

以下是我对listview的问题的建议,

ListView lv;
lv = (ListView)findViewById(R.id.listView);
lv.setOnItemLongClickListener(new OnLongClickListener() {
    @Override
    public void onClick(AdapterView<?>, View v, int position, long id) {
            // Code to execute on long click
        }
});

答案 3 :(得分:0)

首先启用对长按事件的反应。

listview.setLongClickable(true);

然后

listview.setOnItemLongClickListener(new OnItemLongClickListener() {

            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                    int pos, long id) {
                // TODO Auto-generated method stub

                Log.d("long clicked","position: " + pos);

                return true;
            }
        });