为列表视图设置长按监听器
Set long click listener for listview
我有以下代码:
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;
}});
您可以实现侦听器,然后回调将作为函数(方法)出现在您的 class:
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 lv = (ListView)findViewById(R.id.listview);
lv.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View
// your code here
return true;
}
});)
在您的情况下,您可以在 xml 中创建一个列表视图,然后在 MainActivity 中找到该视图,然后执行上述步骤。
您的问题与 this one 非常相似,但看起来并不完全相同。
您注意到 ListActivity class 没有专门针对这种情况的方法覆盖。
为了将此功能添加为方法覆盖,您的 class 应该实现 AdapterView.OnItemLongClickListener
接口,然后您可以添加 onItemLongClick()
方法覆盖,其作用与onListItemClick()
方法覆盖您已有的方法,但会响应长按。
只需确保按照 this answer 中的说明进行操作,您必须在布局 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();
}
//....................
你可以简单地用 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;
}
});
我有以下代码:
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;
}});
您可以实现侦听器,然后回调将作为函数(方法)出现在您的 class:
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 lv = (ListView)findViewById(R.id.listview);
lv.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View
// your code here
return true;
}
});)
在您的情况下,您可以在 xml 中创建一个列表视图,然后在 MainActivity 中找到该视图,然后执行上述步骤。
您的问题与 this one 非常相似,但看起来并不完全相同。
您注意到 ListActivity class 没有专门针对这种情况的方法覆盖。
为了将此功能添加为方法覆盖,您的 class 应该实现 AdapterView.OnItemLongClickListener
接口,然后您可以添加 onItemLongClick()
方法覆盖,其作用与onListItemClick()
方法覆盖您已有的方法,但会响应长按。
只需确保按照 this answer 中的说明进行操作,您必须在布局 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();
}
//....................
你可以简单地用 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;
}
});