我有一个主要活动和一个适配器。 该活动包含一个在列表视图上定义的触摸侦听器。 适配器包含列表视图“项目”的onclick列表器。 当我滚动此列表时,它工作正常,但是在释放手指(这是ACTION_UP运动事件)时,我的列表项被单击,从而打开一个新活动(因为我已经对点击设置了意图)
如何在滚动列表时禁用项目点击?
答案 0 :(得分:0)
您可以将滚动侦听器设置为列表视图,当它停止滚动时,将isScrolling标志设置为false。现在,当您执行项目单击时,只需要检查标志isScrolling即可完成。
请参阅下面的代码。希望它会有所帮助。谢谢
listview.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == SCROLL_STATE_IDLE) {
isScrolling = false;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
isScrolling = true;
}
});
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if(!isScrolling){
//start your activity
}
}
});
答案 1 :(得分:0)
setOnScrollListener(new OnScrollListener() {
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
clickAvailable = false;
}
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
clickAvailable = true;
}
}
});
...
//In OnClickListener
if(clickAvailable) {
//do your work
}
...
答案 2 :(得分:-1)
要触发click事件,请将代码(启动新活动)放入setOnItemClickListener
中hlv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent i = new Intent(Abc.this,Xyz.class);
startActivity(i);
}
});
其中hlv是水平列表视图对象。然后滚动事件不会与点击事件混在一起。