Android双击事件(模拟ListView双击事件)


双击事件在Windows中经常使用,大家都已经用得非常习惯了.但是在Android中默认是没有双击事件的(这个我觉得很奇怪).在我的足球即时比分应用中就用到了双击事件,我上网查过也在一些QQ群中问过一些Android开发人员,他们说这个只能自己来处理了,Android是没有提供双击事件的.

以下是我足球即时比分中的代码:

public class SenseSoccerScoreActivity extends Activity{
	// 双击事件记录最近一次点击的ID
	private String lastClickId;
 
	// 双击事件记录最近一次点击的时间
	private long lastClickTime;
 
	@Override
	public void onCreate(Bundle savedInstanceState) {
		Log.d("score", "SenseSoccerScoreActivity create ...");
		super.onCreate(savedInstanceState);
		ConfigUtil.setConfig(this, KEY_UPDATE_TIME, 0L);
		// 更新本应用的Locale
		ScoreUtil.updateAppLocale(this);
 
 		LeagueUtil.init(this);
 
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.main);
		setTheme(android.R.style.Theme_NoTitleBar);
		initMatchViews() ;
	}
 
	/**
	 * 初始化赛事列表的数据
	 */
	private void initMatchViews() {
               // ------------------ playing listView --------------------
		MatchAdapter playingAdapter = mm.getPlayingAdapter();
		playingAdapter.sortPlayingBy(MatchDateComparator.getInstance());
		playingListView.setAdapter(playingAdapter);
		playingListView.setOnItemLongClickListener(todayListLongClickListener);
 
                // 添加点击事件,双击的判断由mItemClickListenter完成 
		playingListView.setOnItemClickListener(mItemClickListenter); 
		playingListView.setOnTouchListener(listViewOnTouchListener);
		playingListView.setFastScrollEnabled(true);
        }
 
	/**
	 * 双击事件(赛事明细,事件)
	 */
	private OnItemClickListener mItemClickListenter = new OnItemClickListener() {
		public void onItemClick(AdapterView<?> parent, View v, int pos,long id) {
			MatchVO mv = (MatchVO) ((ListView)parent).getAdapter().getItem(pos);
 
			// 如果是双击,1秒内连续点击判断为双击
			if(mv.getId().equals(lastClickId) 
                             && (Math.abs(lastClickTime-System.currentTimeMillis()) < 1000)){
				lastClickId = null;
				lastClickTime = 0;
				Intent intent = new Intent();
				intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
				intent.putExtra("matchId", mv.getId());
				intent.putExtra("matchKey", mv.getMatchKey());
				intent.setClass(SenseSoccerScoreActivity.this, 
                                      MatchEventActivity.class);
				startActivity(intent);
			}else{
				lastClickId = mv.getId();
				lastClickTime = System.currentTimeMillis();
			}
		}
	};
}

相关内容