将上下文菜单添加到SimpleCursorAdapter onClick

时间:2016-08-22 12:33:14

标签: android listview simplecursoradapter android-contextmenu

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

我已将上下文菜单添加到textview之一,但是在textview上它总是提供最后一行的数据(最后一行的textview数据)。

如何帮助我解决这个问题。

以下是我的代码:

在下面的代码中,当用户点击我注册上下文菜单的文本时,我将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()总是返回最后一行地址。

1 个答案:

答案 0 :(得分:0)

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