Я понимаю, что вы хотите показать различные контекстные меню для коротких кликов и длительных кликов по элементу GridView.
Во-первых, вам просто нужно установить прослушиватель для короткого клика, поскольку по умолчанию поведение автоматически отображает контекстное меню при длительных щелчках.
Затем установите флажок Boolean в значение true в OnItemClickListener. Значение по умолчанию для длинных кликов - false.
Наконец, в onCreateContextMenu() проверьте, есть ли у него короткий клик и отобразите другое контекстное меню (стандартное) и установите флаг в false. Else позволяет отображать контекстное меню по умолчанию (опции).
Вот какой код для демонстрации идеи.
public class MainActivity extends Activity {
private static final String[] arr = {"A", "B", "C", "D", "E", "F", "G", "H","I"};
private GridView mTGrid;
private boolean isShort;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTGrid = (GridView) findViewById(R.id.gridView1);
registerForContextMenu(mTGrid);
mTGrid.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
isShort = true;
openContextMenu(view);
}
});
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.cell, arr);
mTGrid.setAdapter(adapter);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
if(isShort) {
getMenuInflater().inflate(R.menu.context_standard, menu);
menu.setHeaderTitle("Standard Menu for "+arr[info.position]);
isShort = false;
}
else {
getMenuInflater().inflate(R.menu.context_options, menu);
menu.setHeaderTitle("Options Menu for "+arr[info.position]);
}
}
}
Или и может сделать эту вещь полностью удалить onItemLongClick слушателя и просто использовать следующий код, чтобы получить выбранную ячейку в onContextItemSelected()
Спасибо за ответ, но я не думаю, это решение моей проблемы. Я не хочу показывать контекстное меню. – untosabla