【问题标题】:Getting id of selected item in listview获取列表视图中所选项目的ID
【发布时间】:2013-01-23 18:38:55
【问题描述】:

我有一个带有 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));
}

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

提前致谢。

【问题讨论】:

    标签: java android listview


    【解决方案1】:

    使用这个

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      这里是菜单的sn-p代码

      @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));
      }
      

      【讨论】:

        【解决方案3】:

        您的 ListView 会通过 AbsListView.getCheckedItemIds() 告诉您此信息

        HTH

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-14
          • 2015-02-12
          • 2016-08-04
          • 1970-01-01
          相关资源
          最近更新 更多