繁体   English   中英

使用上下文菜单在列表视图中选择项目

[英]Getting the item selected in list view using Context Menu

无法弄清楚我的代码出了什么问题:

registerForContextMenu(lv_myhitshotlists);
    AdapterContextMenuInfo menuinfo = null;

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        /*menu.setHeaderTitle("Item Operations");
        menu.add(0, v.getId(), 0, "Edit Film");
        menu.add(0, v.getId(), 0, "Delete Film");*/

        MenuInflater inflater = getMenuInflater();  
        inflater.inflate(R.menu.context_myfilm_list,menu);
        menuinfo = (AdapterContextMenuInfo) menuInfo;
        menu.setHeaderTitle("Options");
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
    try{
        menuinfo = (AdapterContextMenuInfo) item.getMenuInfo();
        AdapterView.AdapterContextMenuInfo info= (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
        Long ids = madapter.getItemId(info.position);//what item was selected is ListView
         i = ids.intValue();

        switch (item.getItemId()) { 

        case R.id.menu_edit_myfilm:

            intHitshotEdit = new Intent(MyHitshotListActivity.this,MyHitshotInfoEditActivity.class);
            intHitshotEdit.putExtra("video_id", myList.get(i).getid());
            intHitshotEdit.putExtra("video_title", myList.get(i).getTitle());
            Toast.makeText(getApplicationContext(),myList.get(i).getTitle(), Toast.LENGTH_SHORT).show();
            //intVideodetails.putExtra("video_desc", myList.get(i).get);
            startActivity(intHitshotEdit);
            overridePendingTransition(R.anim.slideinfromright,R.anim.slideouttoleft);
            //intVideoUpload.putExtra("title",""+info.);

            return true;

        case R.id.menu_delete_myfilm:

            return true;

        default:

        }
    }catch(Exception e)
    {
        e.printStackTrace();
    }
        return super.onContextItemSelected(item);
        }

每次Long ids每次返回0时,我都将数据绑定到asynctask的onpostexecute()部分中的listview,如下所示:

 public void setAdapterToListview(ArrayList<MyHitshotListData> myList) {
              madapter=new MyHitshotListAdapter(context, myList);
              lv_myhitshotlists.setAdapter(madapter);
          }

MyHitshotListAdapter是一个扩展基本适配器类的适配器。出了什么问题?为什么ids的值始终为零? position的值正确。

您可以通过MenuItem获取长按的列表项的位置

@Override
    public boolean onContextItemSelected(MenuItem item) {
         AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
         int listPosition = info.position;
        myList.get(listPosition).getTitle();//list item title
    }

您将直接在onContextItemSelected(MenuItem item)方法中获取索引 ,例如

int索引= info.position;

然后您将从ArrayList获取特定索引的数据,例如

int video_id = myList.get(index).getid();

@Override
public boolean onContextItemSelected(MenuItem item) {
     AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
     int listPosition = info.position;
    adapter.getItem(listPosition);//list item title
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM