1

カレンダーの日ビューを表示するAndroidアプリを作成しています。これは、イベントの開始時刻と終了時刻を表す色付きのブロックが上に浮かんでいるリストのように見えます。

すべてを正しく行うことができましたが、同じ時間または重複する時間に基づいてイベントを並べ替えたり、他のイベントの開始時間と終了時間の範囲内で開始時間または終了時間を持っているイベントを並べ替えたりしたかったのです。

開始時間と終了時間はミリ秒単位です。

開始時刻をstartTimeListに格納し、終了時刻をendTimeListに格納し、リストを反復処理して時刻を比較します。

この目的のために、時間が別のイベントの開始または終了の範囲内にあるかどうかを比較するこのメソッドを作成しました

public boolean isInRange(long timeToBeCompared,long startTime,long endTime){
  if(timeToBeCompared>=startTime&&timeToBeCompared<=endTime){
    return true;
    }
    return false;
  }

上記の方法で最初のイベントの開始時刻または終了時刻を入力し、2番目のイベントの開始時刻と終了時刻を2番目と3番目のパラメーターとして渡し、それがtrueかどうかを確認し、可変カウントを使用して同様の開始時刻と終了時刻のカウントを保持します。しかし、私のカウント値は間違っています。

他に良いアプローチはありますか?

4

1 に答える 1

1

このコードを試してください:

/** Checks whether two intervals overlap. */
boolean overlap(long startTime1, long endTime1, long startTime2, long endTime2) {
    if (endTime1 < startTime2 || startTime1 > endTime2) {
        return false;
    return true;
}
于 2012-02-13T09:54:29.447 に答える