Java 关于单触获得多触事件
事实上,我有一个列表视图触摸列表视图,我会得到一个弹出窗口。但当我触摸列表时,一次触摸就会有多个窗口 活动:Java 关于单触获得多触事件,java,android,multi-touch,ontouch,Java,Android,Multi Touch,Ontouch,事实上,我有一个列表视图触摸列表视图,我会得到一个弹出窗口。但当我触摸列表时,一次触摸就会有多个窗口 活动: listView1.setAdapter(adapter); adapter.notifyDataSetChanged(); listView1.setOnTouchListener(new AdapterView.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event
listView1.setAdapter(adapter);
adapter.notifyDataSetChanged();
listView1.setOnTouchListener(new AdapterView.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
dialog = new Dialog(PendingOrdersActitvity.this);
dialog.setContentView(R.layout.itembumping);
dialog.show();
list1=(ListView )dialog.findViewById(R.id.list1);
adapter = new CustomAdapter(PendingOrdersActitvity.this,itemsList1);
list1.setAdapter(adapter);
list1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
// ....
});
return true;
}
});
您可以使用setOnClickListener代替TouchListener,在方法内部为对话框调用添加代码 如果需要多点触摸,可以在活动中使用此代码
如果您使用的是
ListView
,则可以使用onItemClickListener
。或者,如果出于某种原因要使用onTouchListener,则必须检查对话框
是否不可见,如果不可见,则显示对话框
if(!dialog.isShowing()){
// Show the dialog
}
OnTouchListener界面中的onTouch方法监听许多不同的触摸事件动作。 因此,您应该像下面这样区分事件-动作类型
listView1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_UP:
// Do something here for touch point up event
return true;
case MotionEvent.ACTION_DOWN:
// Do something here for touch point down event
return true;
}
return false;
}
});
如果您只想在listview中选择一项,我建议您使用setOnItemClickListener而不是使用setOnTouchListener
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Do something here!!
}
});
下面的代码描述了如何使用setOnItemClickListener
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Do something here!!
}
});
mListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//在这里做点什么!!
}
});
Tnq我每个人都得到了解决方案
listView1.setOnTouchListener(new AdapterView.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){ // code
return true; } return false;
}
这是因为onTouch将接收多个touchevent状态,请尝试学习OnTouchListener如何工作,以便您可以适当地调整代码,您还需要筛选特定事件。阅读文档@,android.view.MotionEvent)为什么不选择Listview ccomponent的OnItemSelectedListener?只要触摸列表项,此方法就会调用。