gpt4 book ai didi

android - 如何在我的 ListView 上启用 LongCLicks?

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

我试图在我的应用中启用长按,但我无法编译它。我在这里查看了先前问题中的示例,但我无法编译它们中的任何一个。我的主要 Activity 声明为:

import android.widget.AdapterView.OnItemLongClickListener;
public class LinearLayoutDemo extends ListActivity implements OnClickListener, OnItemClickListener, OnItemLongClickListener {

在 onCreate() 方法中,我把这个:

getListView().setOnItemLongClickListener(this);

对于我的 ListView (myLV),我这样做了:

myLV1.setOnItemLongClickListener(new View.OnItemClickListener() {
@Override public boolean onLongClick(View v) {
Log.d(TAG, "setOnItemLongClickListener() called for myLV");
return(true);
}
});

我想上面的一定是错误的,但我不知道为什么。编译错误是

LinearLayoutDemo.java:45: com.commonsware.android.linearpct.LinearLayoutDemo is not abstract and does not override abstract method onItemLongClick(android.widget.AdapterView<?>,android.view.View,int,long) in android.widget.AdapterView.OnItemLongClickListener
[javac] public class LinearLayoutDemo extends ListActivity implements OnClickListener, OnItemClickListener, OnItemLongClickListener {

LinearLayoutDemo.java:287: cannot find symbol
[javac] symbol : class OnItemLongClickListener
[javac] location: class android.view.View
[javac] myLV1.setOnItemLongClickListener(new View.OnItemLongClickListener() {
[javac] ^

********* ******更新***************

我在 ListActivity 类定义中去掉了 OnItemLongClickListener。我也摆脱了这个

getListView().setOnItemLongClickListener(this);

然后我添加了这段代码并且成功了(我不知道为什么):

myLV1.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
Log.d(TAG, "onItemLongClick() for LV1");
return true;
}
});

这看起来很简单,所以我坚持使用它,除非有人告诉我我不应该这样做。

********* *** 编辑 **************

好的,长按功能可以正常使用了。我如何知道我长按了哪个项目?我原以为 myLV1.getCheckedItemPosition() 会起作用,但它不起作用。

没关系,它在 onItemLongClick() 的“位置”参数中。

最佳答案

您在这里所做的实际上是将 onLongClickListener 设置两次:

1. getListView().setOnItemLongClickListener(this);

在这里,您将 Activity 设置为监听器,因为它实现了 onLongClickListener 接口(interface)。

2. myLV1.setOnItemLongClickListener(new View.OnItemClickListener() {....

在这里您正在创建一个新的 onItemClickListener 并尝试将其再次应用到列表中。从您的 Activity 代码中删除此部分。

并添加未实现的方法:

onLongClick 应该在您的 Activity 中,只要您尝试实现 onLongClickListener

在此方法中,您可以指定长按时的操作。

更新:

enter image description here

  1. 右键单击错误。
  2. 添加未实现的方法。

这会将这段代码添加到类中:

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

在其中定义长按操作。

关于android - 如何在我的 ListView 上启用 LongCLicks?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15862431/

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