0

我有一个带有 listView 的应用程序,我在其中设置了我的 sqlite 数据库中的数据。我的 CustomCursorAdapter 将数据(来自 DBAdapter)放在列表​​视图中。我想从我的 listView 中获取所选项目的项目 ID,我通过以下代码使其工作:

listView.setOnItemClickListener(new OnItemClickListener() {
           @Override
           public void onItemClick(AdapterView<?> listView, View view, 
             int position, long id) {
           // Get the cursor, positioned to the corresponding row in the result set
           Cursor cursor = (Cursor) listView.getItemAtPosition(position);

           //Get it from the database.
           String countryCode = 
           cursor.getString(cursor.getColumnIndex(cursor.getColumnName(0)));
           Toast.makeText(getApplicationContext(),
             countryCode, Toast.LENGTH_SHORT).show();

           }
          });

该代码确实获得了 ID 并敬酒,我可以在其中看到 ID。这完美地工作。现在我想把它放在一个上下文菜单中,我在其中长按该项目(所以这个方法不会启动)。我有使用项目的上下文菜单,但我只需要获取列表视图中被选中的项目的 ID。

这是我的上下文菜单代码:

     public boolean onContextItemSelected(MenuItem item) {

     Cursor cursor = (Cursor) listView.getItemAtPosition(position);


       String countryCode = 
       cursor.getString(cursor.getColumnIndex(cursor.getColumnName(0)));


      switch (item.getItemId()) {
              case CONTEXT_MENU_DELETE_ITEM:

               Toast.makeText(getApplicationContext(),
                     countryCode, Toast.LENGTH_SHORT).show();
                   return(true);
             case CONTEXT_MENU_UPDATE:

                   return(true);    
      }
  return(super.onOptionsItemSelected(item));
}

上下文菜单现在不起作用,因为未设置位置变量。我真的不知道如何获得选定的项目。

提前致谢。

4

3 回答 3

1

用这个

AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item .getMenuInfo();   
int positionSelected = menuInfo.position; 
于 2013-01-23T10:38:55.760 回答
0

它很简单,只需在实现 onItemClick 时实现 onItemLongClick 并将此列表视图注册为上下文菜单。

长按获取索引,通过此获取选定的 ID,并在上下文菜单中使用此 ID。

另一种方法是在此链接中查看链接

http://progrnotes.blogspot.in/2010/10/android-context-menu-in-listview-after.html

这是菜单的片段代码

@Override
 public boolean onContextItemSelected(MenuItem item) {

      AdapterView.AdapterContextMenuInfo info= (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
      Long id = getListAdapter().getItemId(info.position);/*what item was selected is ListView*/

      switch (item.getItemId()) {
              case CONTEXT_MENU_DELETE_ITEM:
                    //do smth
                   return(true);
             case CONTEXT_MENU_UPDATE:
                   //do smth else)
                   return(true);   
      }
  return(super.onOptionsItemSelected(item));
}
于 2013-01-23T10:35:31.837 回答
0

你的 ListView 通过AbsListView.getCheckedItemIds()告诉你这个

高温高压

于 2013-01-23T10:36:48.147 回答