2017-09-21 7 views
0

Androidで1つのミーティングアプリケーションを作成しています。このアプリケーションでは、ユーザは将来の日付と時間帯を入力できます。タイムスロットはペアになっていることを意味します(つまり、午後2時〜3時、午後1時45分〜午後2時15分)。だから、私の質問は、ユーザーが新しいタイムスロットを入力し、古いタイムスロットまたは以前に入力されたタイムスロットと衝突しないようにすることです。 つまり、ArrayListには3つのフィールドがあります。日付、fromTime、toTime。これらのタイムスロット上 だから、と仮定するユーザーが既に作成した会議:Androidのタイムスロット別リストの並べ替えと古いものの新しいタイムスロットの確認

22/09/2017 11:00 AM to 11:45 AM 
22/09/2017 11:55 AM to 12:30 PM 
22/09/2017 12:50 PM to 01:30 PM 
22/09/2017 04:30 PM to 05:30 PM 

ので、そのユーザ後に有効または上記のものと競合しませんタイムスロットのみを挿入することができます。

i.e. 
02:00 PM to 3:00 PM 
03:30 PM to 04:15 PM <-- These two time slots can be valid but 

it can't be like this 
11:30 AM to 12:00 PM 
12:15 PM to 12:40 PM 

私に助けてください。すべての人に事前に感謝します。新しいFromまたは新規UntilFrom-Untilペアを既存の間にあるかどうかをチェックループ内

public class Pair { 
    private Date from; 
    private Date until; 
    public Pair(Date from, Date until){ 
     this.from = from; 
     this.until = until; 
    } 
    public Date getFrom(){ return from; } 
    public Date getUntil(){ return until; } 
    public void setFrom(Date from){ this.from = from; } 
    public void setUntil(Date until){ this.until = until; } 
} 


List<Pair> listOfMeetings = getDefaultList(); 
Pair newPair = new Pair(dateFrom, DateUntil) 

boolean hasConficts = false; 

Calendar newFromCalendar = Calendar.getInstance(); 
Calendar loopingFromCalendar = Calendar.getInstance(); 

Calendar newUntilCalendar = Calendar.getInstance(); 
Calendar loopingUntilCalendar = Calendar.getInstance(); 

for(Pair p : listOfMeetings) { 

    newFromCalendar.setTime(newPair.getFrom()); 
    loopingFromCalendar.setTime(p.getFrom()); 

    newUntilCalendar.setTime(newPair.getUntil()); 
    loopingUntilCalendar.setTime(p.getUntil()); 

    if (newFromCalendar.after(loopingFromCalendar) && newFromCalendar.before(loopingUntilCalendar)) { 
     hasConficts = true; 
     break; 
    } 
    if (newUntilCalendar.after(loopingFromCalendar) && newUntilCalendar.before(loopingUntilCalendar)) { 
     hasConficts = true; 
     break; 
    } 
} 

:あなたは<Date, Date>ペアとしてこれらのスロットを保存する場合は、新しいペアが、このアプローチを使用して、既存のと競合しないかどうかをチェックすることができます

+0

Calendarクラスを使用すると、前後にメソッドがあります。新しいタイムスロットの場合は、古いタイムスロットの開始時刻と新しいタイムスロットの開始時刻の後ではなく、開始時刻が古いタイムスロットと時刻より前でないことを確認する必要があります。新しいタイムスロットの終了時刻と同じ – Beyka

+0

問題は日付付きではありません。主な問題はタイムスロットを持つことであり、ごめんなさい。あなたが私に説明しようとしていることをあなたに届かない。 –

答えて

0

関連する問題