gpt4 book ai didi

android - 防止在 showContextMenu 上调用 onItemLongClick

转载 作者:行者123 更新时间:2023-11-29 21:02:43 24 4
gpt4 key购买 nike

我正在使用自定义 ListView,它实现了拖动元素以重新排序它们。重新排序是通过长按启动的。

我还想通过一次短按打开列表中每个元素的上下文菜单,就像这样(来自包含 ListView 的 fragment 的代码):

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mainFragment.this.getActivity().openContextMenu(view);
}
});

问题是,Android 内部显然通过调用 View 的 OnItemLongClickHandler( source ) 的 onItemLongClick 方法打开上下文菜单,这显然会导致拖动行为启动。

我怎样才能避免这种行为?

最佳答案

我想通了。您可以在 onItemClick 中将私有(private) bool 变量设置为 true,并在 onItemLongClick 中抑制所有行为,如果此 bool 变量为真:

setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int pos, long id) {
itemClicked = true;
parent.showContextMenuForChild(v);
}
});
setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View view, int pos, long id) {
if(!itemClicked) {
//dragging logic here
}
itemClicked = false;

关于android - 防止在 showContextMenu 上调用 onItemLongClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25529760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com