我的问题是,当我尝试在ListView中拖动一个项目时,我并不总是得到ACTION_DOWN事件。我有很多ACTION_MOVE事件,只有一个ACTION_UP事件。 情况并非总是如此。我有3次ACTION_DOWN。它使我困惑。
我看了类似的问题,但它的答案似乎不适合我的。谁能想到为什么会这样?
由于
//list_client -- a listview
list_client.setOnTouchListener(new View.OnTouchListener() {
float f1 = -1, f2 = -1 ;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
f1 = event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
f2 = event.getRawY();
if(f2 - f1 > 50){
if(View.VISIBLE != rl_search_and_add.getVisbility() && ){ rl_search_and_add.setVisibility(View.VISIBLE);
}
f1 = f2;
}else if (f2 - f1 < -50){
rl_search_and_add.setVisibility(View.GONE);
f1 = f2;
}
break;
case MotionEvent.ACTION_UP:
f1 = -1; f2 = -1;
break;
}
return false;
}
});
答案 0 :(得分:1)
这种行为可能有几个原因。
MotionEvent.ACTION_DOWN
已被其他组件处理,但是用户如何继续拖动并点击列表视图区域,您收到了MotionEvent.ACTION_MOVE
个操作。 答案 1 :(得分:0)
你应该像这样重写onInterceptTouchEvent:
String s1;
Set<String> s=new TreeSet();
for( int i=1;i<10;i++)
{
s1=null;
s1=""+i;
for(int j=0;j<10;j++)
{
String tempj=s1;
s1=s1+j;
for(int k=0;k<10;k++)
{
String tempk=s1;
s1=s1+k;
int temp=i+j-k;
s1=s1+temp;
if(temp<10)
s.add(s1);
s1=tempk;
}
s1=tempj;
}
}
for(String i:s )
System.out.println(i+);
然后将yDown用于您的程序