2012-07-24 34 views
1

我有以下问题:滚动到列表中的下一个项目使用Next键从softkeyboard

我有一个自定义行的列表视图,并在每一行有几个编辑文本(一,二)。 我希望每次触摸软键盘上的下一个按钮时都能够滚动到下一个元素。 我已经实现了下面的代码:

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 

    if (displayFlag == GuiConstants.GUI_QUICK_DISPLAY) { 
     if (event.getAction() == KeyEvent.ACTION_DOWN) { 
      switch (event.getKeyCode()) { 
       case KeyEvent.FLAG_EDITOR_ACTION: { 
        scrollToNext(); 
        return true; 
       } 
      } 
     } 
    } 
    return super.dispatchKeyEvent(event); 
} 

private void scrollToNext() { 
    int currentPosition = listView.getFirstVisiblePosition(); 
    if (currentPosition == listView.getCount() - 1) 
     return; 
    listView.setSelection(currentPosition + 1); 

} 

的问题是,该列表滚动伟大工程,直到行必须创建(它尚未可见)。此时Next按钮被替换为Done按钮。

有没有人知道我该怎么办? 或者,也许有人可以指出一个教程,我可以找到更多关于这个问题?

感谢, Arkde

回答

1

使用习惯这里的EditText是代码,可以帮助你

EditText test = new EditText(context){ 


          @Override 
          public void onEditorAction(int actionCode) { 
           // TODO Auto-generated method stub 
           super.onEditorAction(actionCode); 

           if(actionCode == EditorInfo.IME_ACTION_NEXT){ 

           } 
          } 
         }; 
+0

唯一的问题是,onEditorAction回调不会被调用时的观点是落后softkeyboard(或至少在列表向下滚动之前的最后位置)。任何想法为什么会发生? – Arkde 2012-07-31 14:37:10

相关问题