获取listview中所选项目的ID

时间:2013-01-23 10:31:56

标签: java android listview

我有一个带有listView的应用程序,我在其中设置了我的sqlite数据库中的数据。我的CustomCursorAdapter将数据(来自DBAdapter)放在listview中。 我想从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));
}

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

提前致谢。

3 个答案:

答案 0 :(得分:1)

使用此

AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item .getMenuInfo();   
int positionSelected = menuInfo.position; 

答案 1 :(得分:0)

在实现onItemClick时,只需实现onItemLongClick,并为上下文菜单注册此listview。

在长按中获取索引,通过此获取所选的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));
}

答案 2 :(得分:0)

您的ListView通过AbsListView.getCheckedItemIds()

告诉您

HTH