2011-12-20 44 views
-2

如何禁用listView的onKeyDown?我想要活动的onKeyDown来处理keyEvent并且只处理keyEvent。谢谢。为ListView禁用onKeyDown?

+1

它很难理解你的问题,你能解释一下你想要什么完全实现? – 2011-12-20 12:14:11

+1

当我的listview被集中时,当我按下dpad_down键时,我不想让listview接收事件并更改选定的项目,我想要执行其他操作。 – Vervatovskis 2011-12-20 12:19:16

回答

0

如果你从ListActivity扩展你的列表视图,那么下面将会帮助你。

onListItemClick

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    String item = (String) getListAdapter().getItem(position); 
    Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show(); 
} 

的onkeydown:

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
    super.onKeyDown(keyCode, event); 
     switch(keyCode) 
     { 
      case KeyEvent.KEYCODE_CAMERA: 
      Toast.makeText(ListViewActivity.this, "Pressed Camera Button", Toast.LENGTH_SHORT).show(); 
       return true; 
      case KeyEvent.KEYCODE_1: 
      Toast.makeText(ListViewActivity.this, "Pressed 1", Toast.LENGTH_SHORT).show(); 
       return true; 
      case KeyEvent.KEYCODE_HOME: 
      Toast.makeText(ListViewActivity.this, "Pressed Home Button", Toast.LENGTH_SHORT).show(); 
       return true; 

      case KeyEvent.KEYCODE_BACK: 
      Toast.makeText(ListViewActivity.this, "Pressed Back Button", Toast.LENGTH_SHORT).show(); 
       finish(); 
       return true; 
     } 

     return false; 
    } 
+0

谢谢ahmad,如果它不是ListActivity的活动。 – Vervatovskis 2011-12-20 13:56:55

0

使用这个类

public class CustomListView extends ListView { 

public CustomListView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    if ((KeyEvent.KEYCODE_DPAD_UP == event.getKeyCode() || KeyEvent.KEYCODE_DPAD_DOWN == event.getKeyCode())) { 
     //handle key events here 
    } 
    return false; 
} 

} 
+0

这篇文章是4岁以上...为什么回答? – 2016-03-03 13:44:35