diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 2828b68..16ac52a 100644 Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ diff --git a/.idea/misc.xml b/.idea/misc.xml index 99202cc..37a7509 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,30 +1,5 @@ - - - - diff --git a/.idea/modules.xml b/.idea/modules.xml index 432cb5f..7270573 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/java/com/ratintech/behkha/persiandatepicker/MainActivity.java b/app/src/main/java/com/ratintech/behkha/persiandatepicker/MainActivity.java index 6a62e8b..6853961 100644 --- a/app/src/main/java/com/ratintech/behkha/persiandatepicker/MainActivity.java +++ b/app/src/main/java/com/ratintech/behkha/persiandatepicker/MainActivity.java @@ -36,6 +36,8 @@ public void onDaySelect(YearMonth yearMonth, Day day) { .hasAnimation(false) // Animation for item selection . default is false .load(); + + } diff --git a/persiandatepicker/src/main/java/com/ratintech/behkha/persiandatepicker/PersianDatePicker.java b/persiandatepicker/src/main/java/com/ratintech/behkha/persiandatepicker/PersianDatePicker.java index 013036f..3ed68a0 100644 --- a/persiandatepicker/src/main/java/com/ratintech/behkha/persiandatepicker/PersianDatePicker.java +++ b/persiandatepicker/src/main/java/com/ratintech/behkha/persiandatepicker/PersianDatePicker.java @@ -30,6 +30,7 @@ public class PersianDatePicker extends LinearLayout implements View.OnClickListe private ArrayList mYearMonths; private OnDaySelectListener mOnDaySelectListener; private Typeface typeface; + private int selectedPosition = -1; private float elevation = 0f; private float radius = 0f; private int selectedItemBackgroundColor = R.color.colorPrimary; @@ -131,6 +132,7 @@ public void load(){ return; setupView(mYearMonthIndex); } + private void setupView(int index){ YearMonth yearMonth = this.mYearMonths.get(index); @@ -146,6 +148,7 @@ private void setupView(int index){ adapter.setElevation(this.elevation); adapter.setRadius(this.radius); adapter.setAnimation(this.hasAnimation); + adapter.setSelectionPosition(selectedPosition); this.mDaysRecyclerView.setAdapter( adapter ); final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext() , LinearLayoutManager.HORIZONTAL , true); this.mDaysRecyclerView.setLayoutManager(linearLayoutManager); @@ -176,6 +179,41 @@ private String getTitle(YearMonth yearMonth){ return yearMonth.getYear() + " " + yearMonth.getMonth(); } + public int setItemSelected(String date) { + String[] strings = date.split("-"); + if (strings.length != 3) + throw new IllegalArgumentException("date must divided by -"); + int year = Integer.valueOf(strings[0]); + int day = Integer.valueOf(strings[2]); + int index = findYearMonthIndex(year,strings[1]); + if (index != -1) { + mYearMonthIndex = index; + selectedPosition = findDayIndex(mYearMonths.get(index),day); + setupView(mYearMonthIndex); + } + return selectedPosition; + } + + public void scrollToPosition(int pos) { + mDaysRecyclerView.scrollToPosition(pos); + } + + private int findYearMonthIndex(int year,String month){ + for (int i = 0; i < mYearMonths.size(); i++) { + if (mYearMonths.get(i).getYear() == year && mYearMonths.get(i).getMonthNumber().equals(month)) + return i; + } + return -1; + } + + private int findDayIndex(YearMonth yearMonth, int day){ + for (int i = 0; i < yearMonth.getDays().size(); i++) { + if (yearMonth.getDays().get(i).getNumber() == day) + return i; + } + return -1; + } + @Override public void onClick(View v) { int i = v.getId(); diff --git a/persiandatepicker/src/main/java/com/ratintech/behkha/persiandatepicker/adapters/DaysRecyclerViewAdapter.java b/persiandatepicker/src/main/java/com/ratintech/behkha/persiandatepicker/adapters/DaysRecyclerViewAdapter.java index 6e3c7b4..480babe 100644 --- a/persiandatepicker/src/main/java/com/ratintech/behkha/persiandatepicker/adapters/DaysRecyclerViewAdapter.java +++ b/persiandatepicker/src/main/java/com/ratintech/behkha/persiandatepicker/adapters/DaysRecyclerViewAdapter.java @@ -159,4 +159,5 @@ public void setRadius(float radius) { public void setAnimation(boolean animation){ this.hasAnimation = animation; } + public void setSelectionPosition(int selectedPosition){ this.selectedPosition = selectedPosition;} }