0

我的项目中有listView,有一个ActionMode显示为单击每个listView 的项目。

我做这样的事情:

public class MyActivity extends Activity  {
...
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
...
 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            public boolean onCreateActionMode(final ActionMode mode, Menu menu) {
                mode.setTitle("TITLE");
                getMenuInflater().inflate(R.menu.menu, menu);
                return true;
            }

            @Override
            public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
                return true;
            }

            @Override
            public boolean onActionItemClicked(final ActionMode mode, MenuItem item) {
                switch (item.getItemId()) {
                   ...buttons like this
                    case R.id.doneBTN:


                        break;
                }
                return true;
            }

        }
    });

}

RETURN 中存在问题。此注释显示每个 RETURN“无法从具有 void 返回类型的方法返回值”......那么我该如何解决呢?

4

1 回答 1

0

看来你已经把听众弄得一团糟了。

AdapterView.OnItemClickListener只有一种方法,即onItemClick(). 在这里查看更多信息

要开始ActionMode你可以使用

activity.startActionMode(new MyActionModeListener())

你的听众可以是这样的:

private class MyActionModeListener implements ActionMode.Callback {

    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        MenuInflater inflater = MyActivity.this.getSupportMenuInflater();
        inflater.inflate(R.menu.my_activity_action_mode, menu);
        return true;
    }

    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        return false;
    }

    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {

        switch (item.getItemId()) {
            // handle clicks here
        }

        mode.finish();
        return true;
    }

    @Override
    public void onDestroyActionMode(ActionMode mode) {}
}

要基于列表项单击实际启动 ActionMode,请使用类似

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        MyActivity.this.startActionMode(new MyActionModeListener());
    }
}
于 2015-06-04T15:34:03.953 回答