我正在尝试在我的应用程序中启用长点击,但我无法编译它。我在这里查看了以前问题中的示例,但我无法编译它们中的任何一个。我的主要活动被宣布为:
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() 的“位置”参数中。