2015-03-13 3 views
0

Есть ли способ получить текущее положение меню картыScrollView?получить текущее положение меню

Я звоню invalidateOptionsMenu(), когда распознаются знаки Swipe_Left и Swipe_Right.

Я попытался, используя следующий код

@Override 
public boolean onPreparePanel(int featureId,View view, Menu menu) 
{ 
    menu.clear(); 
    mPosition = mCardScroller.getSelectedItemPosition(); 
    Log.i("swiped", Integer.toString(mPosition)); 
    switch(mPosition) 
    { 
     case 0: 
      getMenuInflater().inflate(R.menu.main_menu_0, menu); 
      break; 
     case 1: 
      getMenuInflater().inflate(R.menu.main_menu_1, menu); 
      break; 
     case 2: 
      getMenuInflater().inflate(R.menu.main_menu_2, menu); 
      break; 
    } 

    return super.onPreparePanel(featureId, view, menu); 
} 

однако mCardScroller.getSelectedItemPosition(); получает позицию, которая является активной, прежде чем ударяя. Мне нужно, чтобы получить эту позицию после салфетки, и все еще убедитесь, что меню снова надуто, поэтому меню отображается для соответствующей карты.

Я пробовал использовать -1 и +1, а только проблема с этим, когда я делаю жесткий салфетки, поэтому он пропускает несколько карточек, номер больше не будет прав.

Кто-нибудь знает о решении этой проблемы?

ответ

0

Вы можете использовать onItemSelectedListener CardScrollView для реализации метода обратного вызова onItemSelected. Этот метод вызывается при завершении прокрутки списка. Для получения дополнительной информации см. official docs.

+0

Я не думаю, что решает мою проблему вообще. onItemSelected нуждается в таких параметрах, как «адаптер, вид, позиция, идентификатор» в вызове. Если бы я знал, что это за позиция, я бы не имел этой проблемы. – TheUnknown

+1

Это метод обратного вызова, который GDK будет вызывать после того, как элемент был выбран (что стало возможным благодаря слушателю). Вы не будете называть это сами. Как только он вызывается, вы получите доступ к этим параметрам. – Koh

+0

Я получаю то, что вы сейчас пытаетесь сказать. Однако у меня это реализовано, и я, похоже, не могу получить доступ к параметрам. Я могу переусердствовать. В настоящее время я исправил его, вызвав класс runnable, который ждет несколько миллисекунд после того, как я применил другую карту, чтобы вызвать 'getSelectedItemPosition()', что заставляет меня получить правильную позицию. но я думаю, что это своего рода грязное исправление и, возможно, не лучший способ пойти – TheUnknown

Смежные вопросы