사람들이 모두 당신의 생각에 감사드립니다. 나는 지금 당황 스럽다. 문제는 청취자가 아니었고 스위치를 사용하는 핸들러에 메시지를 보낸다. 간단한 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
}
});
에서 추출 어떻게 할 둘 다 해고되고 있다는 걸 알아? –
처리기 용 코드를 게시 할 수 있습니까? 아마도 당신은 휴식을 놓치고 있습니다; switch (msg.what) {case LAUNCH_QUICK_TRIP :} (을)를 호출 할 때? – dymmeh