У меня есть ListView в LitsActivity, состоящий из строк, которые надуваются из отдельного файла XML.Строки заполняются методом convertView
в моем настраиваемом адаптере для этого ListView.Я пытаюсь вызвать контекстное меню в каждой строке.Обычно мы делаем это, вызывая метод
registerForContextMenu(ourListViewInstance);
в onCreate
.Но у меня это не работает, метод onCreateContextMenu
не вызывается, потому что на этом этапе нет строк списка, они появляются чуть позже.Я попытался использовать
registerForContextMenu(row);
в методе getView
моего адаптера пользовательского списка, чтобы каждая строка регистрировалась для «длинных кликов», и это работает, но по некоторым причинам это недопустимои обычный путь не требуется.
Это мой ItemsAdapter, который создает экземпляры строк ListView:
class ItemsAdapter extends ArrayAdapter<ItemsModel> {
public ItemsAdapter(ArrayList<ItemsModel> list) {
super(Items.this, R.layout.custom_row_view, list);
}
private ItemsModel getModel(int position) {
return (((ItemsAdapter) itemsList.getAdapter()).getItem(position));
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
final ItemsModel currentItemModel = getModel(position); // Model class storing data for all the rows.
ItemsResourceManager resourceManager = null; // class used to easily get and set row views.
if (row == null) {
row = View.inflate(getBaseContext(), R.layout.custom_row_view, null);
row.setClickable(true);
row.setFocusable(true);
row.setBackgroundResource(android.R.drawable.menuitem_background);
resourceManager = new ItemsResourceManager(row);
row.setTag(resourceManager);
} else {
resourceManager = (ItemsResourceManager) row.getTag(); //class used to easily get and set row views.
}
registerForContextMenu(row); // works for each separate LisView row
//... skipped setText actions for this row
}
return row;
}
}
Также я попытался полностью очистить свой custom_row_view.xml от любых фокусируемых элементов, но это не помогло.