我怎样才能抓住这样的事件? onCreateContextMenu
非常相似,但我不需要菜单。
答案 0 :(得分:26)
很难知道你需要实现什么。但我的猜测是你要对接收长按的项目执行一些操作。为此,您有两种选择:
listView.setOnItemLongClickListener (new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView parent, View view, int position, long id) {
//do your stuff here
}
});
答案 1 :(得分:14)
通常情况下,您可以将列表视图上的长按与上下文菜单相关联,您可以通过向Activity.registerForContextMenu(View view)
注册listView来提供与其他Android应用程序更一致的用户界面体验。
然后覆盖应用中的onContextItemSelected方法,如下所示:
@Override
public void onCreate(Bundle savedInstanceState) {
listView = (ListView) findViewById(R.id.your_list_view);
registerForContextMenu(listView);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle(getString(R.string.menu_context_title));
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.your_context_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.some_item:
// do something useful
return true;
default:
return super.onContextItemSelected(item);
}
列表中的位置也保存在info.id
如果您只是想捕捉长按事件,那么我认为Snicolas建议的是什么。
答案 2 :(得分:0)
向您的视图添加自定义View.OnLongClickListener。它可以被许多实例共享,然后您可以使用
的参数onLongClick(View v)
知道点击了哪个视图并做出相应的反应。
此致 斯特凡
答案 3 :(得分:0)
//Deleted individual cart items
//on list view cell long press
cartItemList.setOnItemLongClickListener (new OnItemLongClickListener() {
@SuppressWarnings("rawtypes")
public boolean onItemLongClick(AdapterView parent, View view, final int position, long id) {
final CharSequence[] items = { "Delete" };
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Action:");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
cart = cartList.get(position);
db.removeProductFromCart(context, cart);
new AlertDialog.Builder(context)
.setTitle(getString(R.string.success))
.setMessage(getString(R.string.item_removed))
.setPositiveButton("Done", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(CartDetailsActivity.this, HomeScreen.class);
startActivity(intent);
}
})
.show();
}
});
AlertDialog alert = builder.create();
alert.show();
//do your stuff here
return false;
}
});