2016-12-26 3 views
0

私は私のアプリで私のRecyclerViewにタイムスロットを結合するために、この方法を持っていますが、私は、これはコードAndroidのタイムスロット

の上記の行の結果であり、他の何か

private ArrayList<String> getTimeSet() { 
    ArrayList results = new ArrayList<String>(); 
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a"); 
    for (int i = 0; i < 9; i++) { 
     Calendar calendar = new GregorianCalendar(); 
     calendar.add(Calendar.HOUR_OF_DAY, i); 
     String day = sdf.format(calendar.getTime()); 
     results.add(i, day); 
    } 
    return results; 
} 

enter image description here

をしたいです

しかし、私はアプリケーションが前の時間から現在の時間を取っていないという変更でこのようなものを望んでいます。例えば、4時間のクロックであれば、タイムスロットは4時間以上のクロックから開始する必要があります。みんな enter image description here

+0

問題が解決しましたか? –

+0

いいえ@k Neeraj Lal – neha

+0

答えを確認しましたか? –

答えて

0

私はあなたのメソッドを変更しました。これで確認してください。 ブール値を渡して、その日が当日かどうかをチェックするだけです。

private ArrayList<String> getTimeSet(boolean isCurrentDay) { 
    ArrayList results = new ArrayList<String>(); 
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a"); 
    for (int i = 0; i < 9; i++) { 
     Calendar calendar = new GregorianCalendar(); 
     if(!isCurrentDay) 
      calendar.set(Calendar.HOUR_OF_DAY, 9); 
     calendar.add(Calendar.HOUR_OF_DAY, i); 
     calendar.set(Calendar.MINUTE, 0); 
     calendar.set(Calendar.SECOND, 0); 
     String day1 = sdf.format(calendar.getTime()); 
     calendar.add(Calendar.HOUR, 1); 
     String day2 = sdf.format(calendar.getTime()); 
     String day = day1 + " - " + day2; 
     results.add(i, day); 
    } 
    return results; 
} 

OR

あなたは次の日のためのタイムスロットを取得するには、このメソッドを使用することができます。しかし、現在の日付ブール値を上記のメソッドに渡し、日付が今日か翌日かをチェックする方が良いでしょう。

private ArrayList<String> getNextDayTimeSet() { 
    ArrayList results = new ArrayList<String>(); 
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a"); 
    for (int i = 0; i < 9; i++) { 
     Calendar calendar = new GregorianCalendar(); 
     calendar.set(Calendar.HOUR_OF_DAY, 9); //Added this line only 
     calendar.add(Calendar.HOUR_OF_DAY, i); 
     calendar.set(Calendar.MINUTE, 0); 
     calendar.set(Calendar.SECOND, 0); 
     String day1 = sdf.format(calendar.getTime()); 
     calendar.add(Calendar.HOUR, 1); 
     String day2 = sdf.format(calendar.getTime()); 
     String day = day1 + " - " + day2; 
     results.add(i, day); 
    } 
    return results; 
} 
+0

はい、それは動作しますが、今日の唯一のものは、私は、今日の日付を選択すると、それは現在の時間の隣にタイムスロットを表示するが、ええ、明日の日付を選択すると、 screenshot – neha

+0

@neha答えを変更しました。 – Shubham

+0

@shubham ,,,この変更されたmthdはタイムスロットを最初から午前9時にバインドしますが、今日の日付をバインドする必要があります。両方のケースを動作させたい場合は、 – neha

0

タイムスロットと日付スロットを生成するクラスを作成しました。コードを試してください

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.Calendar; 
import java.util.Date; 

/** 
* 
* @author Neeraj 
*/ 
public class DateSlotClass { 

    public static void main(String[] args) { 
     ArrayList<String> dateList = getDataSet(); 
     System.out.println(dateList); 
     for (String string : dateList) { 
      System.out.println(getTimeSet(string)); 
     } 
    } 

    /** 
    * Generates the time slots based on the date provided 
    * 
    * @param dateString the chosen date 
    * @return list of times 
    */ 
    private static ArrayList<String> getTimeSet(String dateString) { 
     ArrayList results = new ArrayList(); 
     try { 
      SimpleDateFormat inSdf = new SimpleDateFormat("EEE : dd-MMM"); 
      Date inDate = inSdf.parse(dateString); 
      Calendar cal = Calendar.getInstance(); 
      cal.setTime(inDate); 
      cal.set(Calendar.MINUTE, 0); 
      cal.set(Calendar.YEAR, Calendar.getInstance().get(Calendar.YEAR)); 
      cal.set(Calendar.HOUR, Calendar.getInstance().get(Calendar.HOUR) + 1); 

      if (!isTodaysDate(cal)) { 
       cal = Calendar.getInstance(); 
       cal.set(Calendar.HOUR, 9); 
       cal.set(Calendar.MINUTE, 0); 
      } 

      results = new ArrayList<>(); 
      SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a"); 
      for (int i = 0; i < 9; i++) { 
       String time1 = sdf.format(cal.getTime()); 
       cal.add(Calendar.HOUR, 1); 
       String time2 = sdf.format(cal.getTime()); 
       String day = time1 + " - " + time2; 
       results.add(i, day); 
      } 
     } catch (ParseException ex) { 
      ex.printStackTrace(); 
     } 
     return results; 
    } 

    /** 
    * Test if the given date is today 
    * 
    * @param input the chosen date 
    * @return true if date is todays 
    */ 
    private static boolean isTodaysDate(Calendar input) { 
     SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 

     String inString = sdf.format(input.getTime()); 

     Calendar today = Calendar.getInstance(); 
     String todayString = sdf.format(today.getTime()); 

     return inString.equals(todayString); 
    } 

    /** 
    * Generates the date slots based on the date provided 
    * 
    * @param dateString the chosen date 
    * @return list of dates 
    */ 
    private static ArrayList<String> getDataSet() { 
     ArrayList results = new ArrayList<String>(); 
     SimpleDateFormat sdf = new SimpleDateFormat("EEE : dd-MMM"); 
     Calendar calendar = Calendar.getInstance(); 
     for (int i = 0; i < 7; i++) { 
      String day = sdf.format(calendar.getTime()); 
      results.add(i, day); 
      calendar.add(Calendar.DATE, 1); 
     } 
     return results; 
    } 

} 
関連する問題