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にはメソッドが 1 つしかありません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 に答える