【问题标题】:Adding Context Menu to sub view(Textview)of SimpleCursorAdapter onClick将上下文菜单添加到 SimpleCursorAdapter onClick 的子视图(Textview)
【发布时间】:2016-08-22 12:33:13
【问题描述】:

我使用 SimpleCursorAdapter 创建了列表视图,每行包含多个视图(4 个文本视图),我想在单击时将上下文菜单添加到一个文本视图。

我已将上下文菜单添加到其中一个文本视图中,但文本视图的 onclick 始终提供最后一行的数据(最后一行的文本视图数据)。

如何解决此问题,非常感谢您的帮助。

以下是我的代码:

在下面的代码中,当用户单击我为上下文菜单注册的文本时,我将 OnClick 侦听器设置为 textview。

public View getView(int position, View convertView, ViewGroup parent) {  address = (TextView) row.findViewById(R.id.host_address);
                     address = (TextView) row.findViewById(R.id.host_address);
                    address.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {                        
                            registerForContextMenu(address);
                            openContextMenu(address);
                            unregisterForContextMenu(address);
                        }
                    }); }

上下文菜单:

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);

        menu.setHeaderTitle(address.getText());
        menu.add(0, OPEN_MAP, 0, "Open in maps");
        menu.add(0, COPY_ADDRESS, 1, "Copy");
    }

注意:-**在上面的代码中**address.getText()总是返回最后一行地址。

【问题讨论】:

  • 请贴出上述功能相关的代码。
  • 什么都不会发生!
  • @RameshR 添加了代码。
  • 您正在将文本视图分配给 getView() 方法中的地址,该方法包含对最底部列表项文本视图的引用,因为这是布局的最后一个视图。
  • 你的赖特,但是我该如何解决这个问题..任何想法?

标签: android listview simplecursoradapter android-contextmenu


【解决方案1】:

Toolbar 可以用作ActionBar 或单独使用。 独立模式是您不将Toolbar设置为您的操作栏,因此您可以将其用作简单的视图,将其放置在您想要控制的任何位置。

在独立模式下,您需要使用内容/操作手动填充工具栏。例如,如果你想让它显示动作,你需要给它添加一个菜单

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.blah);

    Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);

    // Set an OnMenuItemClickListener to handle menu item clicks
    toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener(){
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            // Handle the menu item
            return true;
        }
    });

    // Inflate a menu to be displayed in the toolbar
    toolbar.inflateMenu(R.menu.your_toolbar_menu);
}

【讨论】:

  • 这不是我想要的,请检查我的更新。
猜你喜欢
  • 1970-01-01
  • 2013-09-05
  • 1970-01-01
  • 2012-02-23
  • 2022-11-11
  • 2017-04-27
  • 2018-12-07
  • 1970-01-01
  • 2015-07-11
相关资源
最近更新 更多