Android - ListView - ContextMenu отображается не для каждого элемента списка - PullRequest
0 голосов
/ 17 мая 2011

У меня есть действие Main.java, которому принадлежит ListView (простое приложение «Блокнот»).Мне нужно контекстное меню при нажатии на элемент списка (одна заметка) с «копией».У меня есть 3 заметки

  1. Длинная заметка
  2. URL-заметка
  3. Короткая заметка

Только при обращении к URL-адресу контекстное меню появляется, когдащелкнул.Почему?

public class Main extends Activity {
    private Button createButton;
    private ListView notesListView;
    private ArrayList<Note> notes;
    private Note selectedNote;
    public static final int noteEditorRequest = 1;
    public static final int noteCreateReqeust = 2;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        notes = NoteFileAdapter.getNotes();
        selectedNote = null;

        if (notes == null) {
            Toast.makeText(this, R.string.err_read, Toast.LENGTH_LONG).show();
            notes = new ArrayList<Note>();
        }

        createButton = (Button) findViewById(R.id.mainCreateButton);
        createButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Main.this, NoteEditor.class);
                intent.putExtra("request", noteCreateReqeust);
                startActivityForResult(intent, noteCreateReqeust);
            }
        });

        notesListView = (ListView) findViewById(R.id.mainNotesListView);
        notesListView.setAdapter(new MainNoteAdapter(this, notes));
        registerForContextMenu(notesListView);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {       
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
        selectedNote = (Note) notesListView.getItemAtPosition(info.position);

        menu.setHeaderTitle(R.string.contextmenu_title);
        menu.add(R.string.contextmenu_copy).setOnMenuItemClickListener(
                new OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem item) {
                        ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
                        clipboardManager.setText(selectedNote.getTextContent());
                        return true;
                    }
                });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...