Страница 1 из 1

Не заходит в onContextItemSelected() для кастомного адаптера

Добавлено: 18 июл 2014, 02:10
bagrusss
Столкнулся с такой проблемой: не вызывается метод onContextItemSelected() для ListView с кастомным адаптером, который наследуется от CursorAdapter. C показом меню проблем нет.
Мои шаги:
1) В onCreate() вызвал registerForContextMenu(lw).
2) В onCreateContextMenu() создал меню:

Код: Выделить всё

	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		super.onCreateContextMenu(menu, v, menuInfo);
			menu.add(0, 10, 0, R.string.action_change_birthday);
			menu.add(0, 11, 0, R.string.action_change_template);
		}		
	}
3) В CursorAdapter переопределил методы newView(), bindView()
4) Класс активности наследуется от ActionBarActivity.

Re: Не заходит в onContextItemSelected() для кастомного адап

Добавлено: 18 июл 2014, 15:45
KamiSempai
Фрагменты используются?

Re: Не заходит в onContextItemSelected() для кастомного адап

Добавлено: 18 июл 2014, 17:52
bagrusss
KamiSempai писал(а):Фрагменты используются?
Фрагменты не использовал. Только ListView у меня в xml-файле активности нет, я его добавляю в onCreate()

Код: Выделить всё

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_list);
		linlay = (LinearLayout) findViewById(R.id.activity_list);
		lw = new ListView(this);
		lw.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
					LayoutParams.WRAP_CONTENT));
		linlay.addView(lw);
		//код инициализации адаптера.
		lw.setAdapter(adapter);		
		lw.setOnItemClickListener(this);
		registerForContextMenu(lw);
}

Re: Не заходит в onContextItemSelected() для кастомного адап

Добавлено: 18 июл 2014, 18:26
bagrusss
Вопрос можно считать закрытым. Перенес ListView в xml-файл активности, все заработало.

Но все таки мне интересно почему метод onContextItemSelected() не вызывается, если создаю список в коде? Какого слушателя для ListView необходимо установить?