【问题标题】:GridView creating context menu with filterGridView 使用过滤器创建上下文菜单
【发布时间】:2013-09-27 21:20:43
【问题描述】:

我目前有一个带有自定义数组适配器和过滤器的网格视图。我正在尝试基于对 gridview 项目的长按来创建上下文菜单。但是,在添加过滤器之前,我会根据其位置说明哪个项目已被按下,现在,当项目被过滤时,位置会发生变化,因此采取的任何操作都会使用错误的资源/选择错误的项目。有什么想法吗?

这是我的gridview初始化:

final GridView gridview = (GridView) findViewById(R.id.gridview);
    aAdpt = new shareadapter(planetsList, this);
    gridview.setAdapter(aAdpt);
    gridview.setTextFilterEnabled(true);
    this.registerForContextMenu(gridview);

这是我的 onClickListener(作为我通常如何获取过滤项目以在活动/意图中使用的示例:

gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
            Planet link = (Planet) gridview.getItemAtPosition(position);
            Intent i = new Intent(ShareActivity.this,
                    ShareActivitySecond.class);
            i.putExtra("IdImgFull", link.getIdImgFull());
            i.putExtra("IdImgShare", link.getIdImgShare());
            startActivity(i);
            // startSecondActivity(position);
        }
    });

这是我的创建上下文菜单,您可以看到它取决于位置,我不确定如何添加变量 int 链接.getIdImgShare()

进入它。

    @Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.shareactivity, menu);
}

    @Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
            .getMenuInfo();
    int IndexSelected = info.position;
    switch (item.getItemId()) {
    case R.id.share:
        shareMethod(IndexSelected);
        return true;
    case R.id.save:
        saveMethod(IndexSelected);
        return true;
    default:
        return true;
    }
}

【问题讨论】:

    标签: android listview gridview contextmenu adapter


    【解决方案1】:

    设法解决它!

    在 onContextItemSelected 中调用了我的适配器和数组,并从那里能够将变量设置为操作。关键的两条线是:

    Planet planet = aAdpt.getItem(aInfo.position);
    int IdImgShare = planet.getIdImgShare();
    

    完整部分:

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterContextMenuInfo aInfo = (AdapterContextMenuInfo) item
                .getMenuInfo();
        Planet planet = aAdpt.getItem(aInfo.position);
        int IdImgShare = planet.getIdImgShare();
        switch (item.getItemId()) {
        case R.id.share:
            shareMethod(IdImgShare);
            return true;
        case R.id.save:
            saveMethod(IdImgShare);
            return true;
        default:
            return true;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 2017-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多