我想将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中的相应数据都应填写字段。
答案 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