如何处理ListView项目的长按?

LA_*_*LA_ 9 android android-listview

我怎么能抓到这样的事件?onCreateContextMenu很相似,但我不需要菜单.

Ale*_*dam 26

很难知道你需要实现什么.但我的猜测是你要对接收长按的项目执行一些操作.为此,您有两种选择:

.

listView.setOnItemLongClickListener (new OnItemLongClickListener() {
  public boolean onItemLongClick(AdapterView parent, View view, int position, long id) {
    //do your stuff here
  }
});
Run Code Online (Sandbox Code Playgroud)

  • @LA_`T obj =(T)parent.getItemAtPosition(position);` (2认同)

Mar*_*her 14

通常,您可以将列表视图上的长按与上下文菜单相关联,您可以通过注册listView Activity.registerForContextMenu(View view)来与其他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);
    }
Run Code Online (Sandbox Code Playgroud)

列表中的位置也保留在 info.id

如果您只想捕获长按事件,那么我认为Snicolas的建议会起作用.