经过一个半小时的搜索后,我找到了一个实际上在stackoverflow上运行的列表视图示例。至少在我的Google教程上没有这样的运气,而且人们在那里提到的大部分内容显然已经被很长时间的编译所取代。无论如何,我得到了它的工作。然后我添加了我的代码以允许我的蓝牙点击器工作。没有快乐。
我需要控制平板电脑而不接触它。它将在玻璃后面,我想要一个ESC代码通过我的按钮或列表前进,另一个按钮来执行突出显示的内容。我的应用程序的简单双按钮界面。该应用程序正在运行,但我想添加一项功能,要求用户从不确定的位置列表中选择(用户提供)。所以似乎列表是一个好主意。该列表有效,但是当我将蓝牙拦截器代码放入其中时,它甚至不会手动滚动。在试图找出列表是否是我的问题的正确解决方案三个小时后,我正在寻求帮助。
package com.example.listview2;
import android.app.Instrumentation;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.ArrayAdapter;
public class HelloListView extends ListActivity {
String[] listItems = {"item 1", "item 2 ", "list","item 1", "item 2 ", "list","item 1", "item 2 ", "list", "android", "item 3", "foobar", "bar", };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.temp);
setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, listItems));
}
@Override
public boolean dispatchKeyEvent(KeyEvent ke){
int keyCode = ke.getKeyCode();
if(ke.getAction() == KeyEvent.ACTION_DOWN){
switch (keyCode)
{
case 59:
return true;
case 19:
new Thread(new Runnable() {
@Override
public void run() {
new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_TAB);
}
}).start();
return true;
case 20:
new Thread(new Runnable() {
@Override
public void run() {
new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);
}
}).start();
return true;
}
}
else if(ke.getAction() == KeyEvent.ACTION_UP){
switch (keyCode){
case 59:
case 19:
case 20:
return true;
}
}
return super.dispatchKeyEvent(ke);
}
}
XML是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<ListView android:id="@+id/ListView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>