在ListView中,有一个OnTouch()事件响应函数,现在需要在ACTION_DOWN时,获取当前选中的ListView Item的Position,不知能否实现? 我现在是直接用listView.getSelectedItemPosition()来获取当前选中的Item Position,但是返回-1,意味着在发生ACTION_DOWN时,Item还处于未选中状态,是这样吗?是否还有其他方法可以得到这个Position值。 注:不要所在Onclick事件中可以获取,这个是在ACTION_UP时才触发的,而我现在需要的是在ACTION_DOWN时就获取这个Position。
解决方案 »
- 如何在adb shell下设置Android的时间?
- 请教高手高手高高手手这个形状怎么绘制出来!!!!!!
- andorid如何点击图片透明区域下方的图片
- ddms中的log打印到一定数量就会刷屏,前面的log就看不到了,有没有好的解决方法
- android打开发短信界面
- 导入的项目出现一句错误提示
- AudioTrack方法求教
- android 有哪些开源的email?
- 如何在自己程序中集成google play service
- webView怎么在所加载的页面初始化的时候执行一段js?
- 怎么在A(程序)发送keyback事件给B
- 在Android 上的WebView 里的flashplayer的本地权限是怎样设?
mViewHolder.close.setTag(position);
mViewHolder.close.setOnTouchListener(this);
你看看你的模式是不是CHOICE_MODE_SINGLE
这些都试试过了,都没用。Log.v(TAG, "SelectedItem = " + mListView.getSelectedItem());
Log.v(TAG, "SelectedItemId = " + mListView.getSelectedItemId());
Log.v(TAG, "Position1 = " + mListView.getCheckedItemPosition());
Log.v(TAG, "Position2 = " + mListView.getSelectedItemPosition());
返回:
SelectedItem = null
SelectedItemId = -9223372036854775808
Position1 = -1
Position2 = -1
mListView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
Log.d(TAG, "== ACTION_DOWN ==");
...
Log.v(TAG, "SelectedItem = " + mListView.getSelectedItem());
Log.v(TAG, "SelectedItemId = " + mListView.getSelectedItemId());
Log.v(TAG, "Position1 = " + mListView.getCheckedItemPosition());
Log.v(TAG, "Position2 = " + mListView.getSelectedItemPosition());
break;
case MotionEvent.ACTION_MOVE:
Log.d(TAG, "== ACTION_MOVE ==");
...
break;
case MotionEvent.ACTION_UP:
Log.d(TAG, "== ACTION_UP ==");
...
break;
}
return false;
}
});
mListView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
Log.d(TAG, "== ACTION_DOWN ==");
...
Log.v(TAG, "SelectedItem = " + mListView.getSelectedItem());
Log.v(TAG, "SelectedItemId = " + mListView.getSelectedItemId());
Log.v(TAG, "Position1 = " + mListView.getCheckedItemPosition());
Log.v(TAG, "Position2 = " + mListView.getSelectedItemPosition());
break;
case MotionEvent.ACTION_MOVE:
Log.d(TAG, "== ACTION_MOVE ==");
...
break;
case MotionEvent.ACTION_UP:
Log.d(TAG, "== ACTION_UP ==");
...
break;
}
return false;
}
});
但一直搞不明白,OnClick,跟OnTouch的差别
建议你试下OnClick