首页 文章

如何定义单击哪个ListView?

提问于
浏览
1

我一直在开发Android应用程序,每个视图有3个 ListView 和一个 ContextMenu

@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo info) {

    menu.add(Menu.NONE, CONTEXT_MENU_ITEM_DELETE, Menu.NONE, "Delete");
    super.onCreateContextMenu(menu, view, info);
}

注册点击捕获:

this.registerForContextMenu(mFirstCategory);    
this.registerForContextMenu(mSecondCategory);
this.registerForContextMenu(mMainCategory);

mFirstCategory, mSecondCategory, mMainCategory are ListViews . 我也有点击行的方法:

@Override
public boolean onContextItemSelected(MenuItem item) {

    AdapterContextMenuInfo info=(AdapterContextMenuInfo)item.getMenuInfo();
    String name = null;
    switch (info.targetView.getId()) {

    case (R.id.listViewFirst): name="First";
    case (R.id.listViewSecond): name="Second";
    case (R.id.listViewMain): name="Main";

    }

    Toast.makeText(this, name+"_"+String.valueOf(info.position), Toast.LENGTH_LONG).show();

    return super.onContextItemSelected(item);
}

我需要定义单击 ListViewListView 点击的位置(行) . 我的"switch/case"块不起作用 . 请告诉我,我该怎么办?

2 回答

  • 1

    targetView是ListView中的单行 . 它的父级将是你的ListView:

    final ListView listView = (ListView) info.targetView.getParent();
    

    然后做:

    switch (listView.getId())
    
  • 0

    不确定这是你定义为"switch/case block not working",但似乎你忘了在每个 case 之后调用 break; - 所以 name 将永远是 Main .

    case (R.id.listViewFirst): name="First"; break;
    case (R.id.listViewSecond): name="Second"; break;
    case (R.id.listViewMain): name="Main"; break;
    

相关问题