如何将JSON数据传递给CalenderView onSelectedDayChange()?

时间:2018-09-18 10:51:43

标签: retrofit2

我想将API中的数据(使用Retrofit调用)传递到日历日期onClick()事件(onSelectedDayChange)。

public class MainActivity extends AppCompatActivity {
List<APIData> dataList;
private CalendarView mCalendarView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mCalendarView=  findViewById(R.id.calendarView);
    Calendar rightNow = Calendar.getInstance();
    mCalendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {

        @Override
        public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
            month = 1+month;
            Toast.makeText(getApplicationContext(), ""+year+"-"+month+"-"+dayOfMonth,Toast.LENGTH_SHORT).show();

        }
    });


    APIInterface apiInterface = APIClient.getClient().create(APIInterface.class);
    Call<APIData> call = apiInterface.gethistorydetails("s10-1", "2018-08-01");
    call.enqueue(new Callback<APIData>() {
        @Override
        public void onResponse(Call<APIData> call, Response<APIData> response) {
            Log.d("TAG",response.code()+"");
            APIData apiData = response.body();
        }
        @Override
        public void onFailure(Call<APIData> call, Throwable t) {

        }
    });

}

}

您可以在此图片中看到,有4个不同的字段需要显示从API调用的数据。因此,每当我单击日历上的任何日期时,API中的相应数据都应填写字段。

2 个答案:

答案 0 :(得分:0)

假设您具有来自APIData对象的所有4个日期。将日期(2018-09-09)转换为timeInMillis并通过单击相应日期字段将日期设置为calendarView:-

bus_arrival.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mCalendarView.setDate(timeInMillis);
        }
    });
check_in.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mCalendarView.setDate(timeInMillis);
            }
        });

答案 1 :(得分:0)

在这种情况下,每次更改日历中的日期时,您都必须每次调用api。此api将在响应中提供数据,只需在您的字段中设置此数据即可。

要执行的步骤很少。

1-在datePicker dailog的onSelectedDayChange方法中,您将获得“ int year,int month,int dayOfMonth”。将这些字段转换为您的API可以理解的日期格式。 要知道如何将这些字段转换为日期格式,请点击此链接 Creating java date object from year,month,day

2-现在调用此APi,此api将在响应中返回这4个字段的结果。

3-只需在这些字段上显示此数据即可。

您的代码会被喜欢

ds.conns