问题描述
更新我的谷歌玻璃最大XE16我的列表视图,这是我用simpleadapter建成后,不能再滚动。有没有一种方法来手动启用与GDK滚动仍然还是解决这个问题?
After updating my Google Glass up to XE16 my listview, which I have built by using a simpleadapter, is not able to scroll anymore. Is there a way to manually enable scrolling nonetheless with the GDK or fix this issue?
推荐答案
我的列表视图停止滚动,同时还与X16更新。您可以通过以下操作共建滚动回:
My listview stopped scrolling as well with the X16 update. You can build scrolling back in by doing the following:
在您的活动的的onCreate
的方法,一定要:
In your activity's onCreate
method, be sure to:
- 设置列表的选择模式
- 设置列表的点击属性为true。
- 设置列表中的
onItemClick
监听器 - 创建一个手势检测器(见下文)
- set the list's choice mode
- set the list's clickable property to true.
- set the list's
onItemClick
listener - create a gesture detector (see below)
例如:
myListView = (ListView)findViewById(R.id.MY_LIST_VIEW);
if(myListView != null){
myListView.setAdapter(mAdapter);
myListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
myListView.setClickable(true);
myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
Log.d("MY_LOG", "click at position " + position);
}
});
}
mGestureDetector = createGestureDetector(this);
现在,我们需要写的 createGestureDetector()
拨打以上(最后一行)的新方法。基本上,你可以修改GDK文档中给出的code到上下滚动的基础上 SWIPE_LEFT
和 SWIPE_RIGHT
手势。需要注意的是,在上述code,我指定我的ListView一个叫做变量 myListView
。下面是手势检测的样本方法,将滚动的基础上轻扫手势:
Now, we need to write a new method for the createGestureDetector()
call above (last line). Basically, you can modify the code given in the GDK docs to scroll up and down based on SWIPE_LEFT
and SWIPE_RIGHT
gestures. Note that in the above code, I assigned my listView to a variable called myListView
. Here's a sample method for the gesture detector that will scroll based on the swipe gestures:
private GestureDetector createGestureDetector(Context context) {
GestureDetector gestureDetector = new GestureDetector(context);
//Create a base listener for generic gestures
gestureDetector.setBaseListener( new GestureDetector.BaseListener() {
@Override
public boolean onGesture(Gesture gesture) {
if (gesture == Gesture.TAP) { // On Tap, generate a new number
return true;
} else if (gesture == Gesture.TWO_TAP) {
// do something on two finger tap
return true;
} else if (gesture == Gesture.SWIPE_RIGHT) {
// do something on right (forward) swipe
myListView.setSelection(myListView.getSelectedItemPosition()+1);
return true;
} else if (gesture == Gesture.SWIPE_LEFT) {
// do something on left (backwards) swipe
myListView.setSelection(myListView.getSelectedItemPosition()-1);
return true;
}
return false;
}
});
gestureDetector.setFingerListener(new GestureDetector.FingerListener() {
@Override
public void onFingerCountChanged(int previousCount, int currentCount) {
// do something on finger count changes
}
});
gestureDetector.setScrollListener(new GestureDetector.ScrollListener() {
@Override
public boolean onScroll(float displacement, float delta, float velocity) {
// do something on scrolling
return false;
}
});
return gestureDetector;
}
希望这有助于!
Hope this helps!
这篇关于如何启用滚动关于谷歌玻璃的固件X16一simpleadapter的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!