- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在我的应用中启用长按,但我无法编译它。我在这里查看了先前问题中的示例,但我无法编译它们中的任何一个。我的主要 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
在此方法中,您可以指定长按时的操作。
更新:
这会将这段代码添加到类中:
@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/
我是一名优秀的程序员,十分优秀!