2011-10-13 2 views
2

사람들이 모두 당신의 생각에 감사드립니다. 나는 지금 당황 스럽다. 문제는 청취자가 아니었고 스위치를 사용하는 핸들러에 메시지를 보낸다. 간단한 break 문이 하나 빠져있어 프로그램이 원래대로 작동합니다. 시간 내 주셔서 다시 한번 감사드립니다.짧은 클릭으로 Android가 onclick과 onlongclick을 모두 실행합니다.

나는 열차 여행을위한 빠른 여행 가능성을 저장하는 어댑터 클래스를 만들고 있습니다. 이것은 목록에서 구현됩니다. 목록에 삭제 버튼이 있습니다. 이 버튼을 누르면 목록에서 제거됩니다. 다른 것을 터치하면 다른 창을 열어야하지만 길게 누르면 현재 설정을 편집하는 대화 상자가 열립니다.

짧은 클릭시 짧고 긴 클릭 리스너가 모두 터집니다. 길게 누르면 긴 클릭 만 해고됩니다.

의견이나 팁/답변이 있으십니까? 코드는 다음과 같습니다

public View getView(int position, View convertView, ViewGroup viewGroup) { 
QuickTrips entry = quickTripList.get(position); 

if(convertView == null) { 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    convertView = inflater.inflate(R.layout.quick_trip_list, null); 
} 

convertView.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    if(handler != null) { 
     QuickTrips entry = (QuickTrips) v.getTag(); 
     Message msg = Message.obtain(); 
     msg.what = LAUNCH_QUICK_TRIP; 
     msg.obj = entry; 
     handler.sendMessage(msg); 
    } 
    } 
}); 

convertView.setOnLongClickListener(new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
    QuickTrips entry = (QuickTrips) v.getTag(); 
    Message msg = Message.obtain(); 
    msg.what = EDIT_QUICK_TRIP; 
    msg.obj = entry; 
    handler.sendMessage(msg); 
    return true; 
    } 
}); 

convertView.setTag(entry); 

TextView text = (TextView) convertView.findViewById(R.id.text); 
text.setText(entry.getFromTo()); 

Button remove = (Button) convertView.findViewById(R.id.remove); 
remove.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    QuickTrips entry = (QuickTrips) v.getTag(); 
    quickTripList.remove(entry); 
    notifyDataSetChanged(); 
    } 
}); 
remove.setTag(entry); 

return convertView; 

}

그럼 내가 그것을 가져하지만 succes에없이 ... View.on을 제거했습니다. 이제 나는 onTouchListener를 시도했다. 문제는 이벤트에서만 호출된다는 것이다. 타이머 사용을 시작하려면 더 많은 작업이 필요합니다. 난 그냥 긴 클릭이 짧은 클릭

ontouchevent의 코드에 해고 이유를 이해하지 않습니다

convertView.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
    long downTime = event.getDownTime(); 
    long pressedTime = event.getEventTime(); 
    if(DEBUG) Log.i("qt", downTime + " en " + pressedTime); 

    if(event.getAction() == MotionEvent.ACTION_DOWN) { 
     if(DEBUG) Log.i("qt", "key down"); 
    } 
    else if(event.getAction() == MotionEvent.ACTION_UP) { 
     if(DEBUG) Log.i("qt", "key up"); 
     return true; 
    } 
    else { 
     if(DEBUG) Log.i("qt", "else"); //never called 
    } 

    return true; //if false then action up isn't called 
    } 
}); 
+0

에서 추출 어떻게 할 둘 다 해고되고 있다는 걸 알아? –

+1

처리기 용 코드를 게시 할 수 있습니까? 아마도 당신은 휴식을 놓치고 있습니다; switch (msg.what) {case LAUNCH_QUICK_TRIP :} (을)를 호출 할 때? – dymmeh

답변

-1

시도 :

convertView.setOnLongClickListener(new OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      // TODO Auto-generated method stub 
      return true; 
     } 
    }); 

here

+0

이것은 그의 질문에서 그가 가진 것과 어떻게 다른가? – dymmeh

+0

View.OnLongClickListener()를 사용하면 마법 같은 일이 발생할 수 있습니다. D –

+0

View.OnLongClickListener()는 OnLongClickListener()와 같습니다. 게시 한 내용은 코드와 동일하므로 아무 것도 해결하지 못합니다. – dymmeh

관련 문제