listview setOnItemLongClickListerer没有用

时间:2016-05-19 08:55:45

标签: android listview

我正在尝试在listview行上实现onItemLongClickListener和onItemClickListener事件,但问题是当我longPress listview行并释放它时,两个事件同时被调用。请给我解决方案我该如何实现。

这是我的代码

listregional.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        final CharSequence[] dialogregion = {"Edit","Delete"};
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("Pilih Menu");
        builder.setItems(dialogregion, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int region) {
                switch (region){
                    case 0:
                        Toast.makeText(getActivity(),"Edited",Toast.LENGTH_SHORT).show();
                        break;
                    case 1:
                        Toast.makeText(getActivity(),"Deleted",Toast.LENGTH_SHORT).show();
                        break;
                    }
                }
            });

        return false;
    }
});

请帮帮我

4 个答案:

答案 0 :(得分:1)

 public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
// your code
return true
}

return true代替return false会阻止点击事件继续。

答案 1 :(得分:0)

您必须通过返回true

向其他侦听器发出消息,表明已调度事件已被使用

答案 2 :(得分:0)

返回boolean true

 listregional.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            final CharSequence[] dialogregion = {"Edit","Delete"};
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setTitle("Pilih Menu");
            builder.setItems(dialogregion, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int region) {
                   switch (region){
                       case 0:
                           Toast.makeText(getActivity(),"Edited",Toast.LENGTH_SHORT).show();
                           break;
                       case 1:
                           Toast.makeText(getActivity(),"Deleted",Toast.LENGTH_SHORT).show();
                           break;
                   }
                }
            });
            return true;
        }
    });

答案 3 :(得分:0)

处理长按事件与处理点击基本相同,只是您返回一个布尔值,指定Android是否应继续传播点击事件。

lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> av, View v, int pos, long id){
    return onLongListItemClick(v,pos,id);
}

});

如果您的长按方法返回true,那么您告诉Android您已处理该事件。如果您的方法返回false,Android仍会调用其他处理程序,例如onItemClick处理程序。

protected boolean onLongListItemClick(View v, int pos, long id) {
Log.i(TAG, "onLongListItemClick id=" + id);
return true;

}

所以更改代码的最后一行以返回TRUE。