Android双击事件(模拟ListView双击事件)
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(); } } }; }
评论暂时关闭