我有一个 recyclerView ,它将根据使用数据绑定的JSON结果填充,我想要做的是检查/比较开始日期&过期日期,以查看" Deals"已过期(如果已过期,则带有文本&#34的文本视图;将显示已过期"
"DealsPageInfo": [
{
"DisplayName": "string",
"StartDate": "2018-04-27T03:06:18.890Z",
"ExpiredDate": "2018-04-27T03:06:18.890Z",
"Url": "string",
"ImageUrl": "string",
"ShortDescription": "string"
}
以下是我的一些问题:
*我应该使用DATE / String来存储对象吗?
*我应该在哪里执行此操作?在我的片段/适配器下?
感谢是否提供了任何来源/示例。
<TextView
android:id="@+id/list_offers_startDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="3dp"
android:text="@{offers.StartDate}"
android:textColor="@color/colorGrayText"
android:textSize="@dimen/list_fontsize"
/>
<TextView
android:id="@+id/list_offers_endDate"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:text="@{offers.ExpiredDate}"
android:textColor="@color/colorGrayText"
android:textSize="@dimen/form_fontsize"
/>
答案 0 :(得分:0)
我应该使用DATE / String来存储对象吗?
是的,你必须在Date或string中保存这两个值。
我应该在哪里执行此操作?在我的片段/适配器下?
您必须在适配器中执行此功能。填充要查看的数据。
比较日期:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date StartDate= sdf.parse(StartDate);
Date ExpiredDate= sdf.parse(ExpiredDate);
if (StartDate.after(ExpiredDate)) {
//create your logic here
}
希望它能帮到你!!
答案 1 :(得分:0)
您可以使用时间戳来执行此类时间检查。在json中发送开始和结束时间戳。您可以在适配器中执行此操作。
答案 2 :(得分:0)
是的,我认为您应该使用Date
来表示开始日期和其他日期,这更有意义。
我认为您的适配器/视图是进行此转换的最佳位置。您应该让解析器为您执行此操作,或者您可以在从网络中取出对象后对List
对象执行一些后期处理。最好甚至在后台线程上。
将String
中的Date
解析为Adapter
中的RecyclerView
有点浪费,可能会使create-react-app
有点滞后。它将导致重复计算相同的值,并可能在UI线程上解析冗长的日期。
答案 3 :(得分:0)
*我应该在哪里执行此操作?在我的片段/适配器下? 在适配器的onBindViewHolder中执行此操作,
public boolean isDateExpired(String startDate, String endDate) {
SimpleDateFormat dfDate = new SimpleDateFormat("dd-MM-yyyy");
boolean b = false;
try {
if (dfDate.parse(startDate).before(dfDate.parse(endDate))) {
return true; // If start date is before end date.
} else if (dfDate.parse(startDate).equals(dfDate.parse(endDate))) {
return false; // If two dates are equal.
} else {
return false; // If start date is after the end date.
}
} catch (ParseException e) {
e.printStackTrace();
return false;
}
}
在适配器中添加此方法,
$data = $this->pageRepository->getMenu(1);
$this->cObj = $GLOBALS['TSFE']->cObj;
$retval = array();
foreach ($data as $key => $row)
{
$pageUid = $row['uid'];
$conf = array('parameter'=>$pageUid, 'returnLast'=>'url');
$uri = $this->cObj->typoLink('', $conf);
array_push($retval, array('title' => $row['title'], 'url' => $uri));
}
答案 4 :(得分:0)
您可以像这样解析日期。
Instant instant = Instant.parse( "2018-04-27T03:06:18.890Z" );
Date date = java.util.Date.from( instant );
if ( Calendar.getInstance().after( date ) ) {
// if this statement is true deal is expired.
}