Android 为listview设置长时间单击侦听器
我有以下代码:Android 为listview设置长时间单击侦听器,android,listview,listener,long-click,Android,Listview,Listener,Long Click,我有以下代码: public class MainActivity extends ListActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } protected void onListItemClick(ListView l, View v,
public class MainActivity extends ListActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
protected void onListItemClick(ListView l, View v, final int position, long id) {
super.onListItemClick(l, v, position, id);
}}
我需要将此更改为onListItemLongClick(),但如何更改?可能吗?试试这个
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View v,
int index, long arg3) {
// write your code
return false;
}});
listView.setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){
长单击(AdapterView arg0,视图v,
整数索引,长arg3){
//编写代码
返回false;
}});
您可以实现侦听器,然后回调将作为函数(方法)出现在您的类中:
public class MainActivity extends ListActivity implements View.OnLongClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View listView = findViewById(R.id.list_view);
listView.setOnLongClickListener(this);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
}
@Override
public boolean onLongClick(View v) {
// Do your work here
return false;
}
}
是的,这是可能的,而且很容易实现, 只需将listview的实例设置为
ListView lv = (ListView)findViewById(R.id.listview);
lv.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View
// your code here
return true;
}
});)
在您的情况下,您可以不用扩展ListActivity,而是用xml创建一个列表视图,并在MainActivity中找到该视图,然后按照上面的步骤进行操作。您的问题与非常类似,但看起来并不是完全重复的 您注意到,该类没有专门针对这种情况的方法重写 为了将此功能添加为方法重写,您的类应该实现
AdapterView.OnItemLongClickListener
接口,然后您可以添加onItemLongClick()
方法重写,该方法重写与您已有的onListItemClick()
方法重写一样,但会响应长时间的单击
只需确保按照中的说明操作,您必须在布局xml中使用android:longClickable=“true”
,或者调用listview.setLongClickable(true)代码>
例如:
public class MainActivity extends ListActivity implements AdapterView.OnItemLongClickListener {
ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listview = (ListView) findViewById(R.id.list);
listview.setLongClickable(true);
}
@Override
public boolean onItemLongClick(AdapterView<?> l, View v,
final int position, long id) {
Toast.makeText(this, "long clicked pos: " + position, Toast.LENGTH_LONG).show();
return true;
}
protected void onListItemClick(ListView l, View v, final int position, long id) {
super.onListItemClick(l, v, position, id);
Toast.makeText(this, "short clicked pos: " + position, Toast.LENGTH_LONG).show();
}
//....................
公共类MainActivity扩展ListActivity实现AdapterView.OnItemLongClickListener{
列表视图列表视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView ListView=(ListView)findViewById(R.id.list);
listview.setLongClickable(真);
}
@凌驾
长按(自适应视图l、视图v、,
最终整数位置,长id){
Toast.makeText(这个“长点击位置:”+位置,Toast.LENGTH_long.show();
返回true;
}
受保护的void onListItemClick(列表视图l、视图v、最终整数位置、长id){
super.onListItemClick(左、右、位置、id);
Toast.makeText(这是“短按位置:+位置,Toast.LENGTH_LONG).show();
}
//....................
您只需使用setOnItemLongClickListener
listview.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Toast.makeText(ClassName.class, "Long Clicked Trigger: ", Toast.LENGTH_LONG).show();
return true;
}
});
listview.setOnItemLongClickListener(新的OnItemLongClickListener(){
@凌驾
长单击(AdapterView arg0、视图arg1、,
整数arg2,长arg3){
Toast.makeText(ClassName.class,“长点击触发器:”,Toast.LENGTH_Long.show();
返回true;
}
});
您能否尝试以不同的方式详细解释一下您想做什么?您的示例代码似乎没有完成任何任务,因此很难猜测…我需要一个函数,当我长时间(比如2秒)单击时,它可以在listview中的一个项目上,然后在函数中执行我的其他代码。你试过了吗?是的,我看到了这个,但我需要作为一个函数来执行。看我的示例函数。我需要完全一样的代码,但使用longclick。