2016-08-20 48 views
1

禁用按鈕我有在特定的時間上CardView安卓

什麼,我試圖實現後設置Button隱形上CardView麻煩: 我有一個CardViewButton。 當用戶下訂單時,訂單日期&時間存儲在MySQL服務器數據庫中。我從服務器獲得這個時間,併爲其添加10分鐘的延遲。

現在這個時間被認爲是使Button無法進入/去掉CardView。我使用

我是什麼: 對於時間,現在用約達時間& 無論下面這段代碼在onBindViewHolder()Recyclerview

我有什麼到目前爲止已經試過: 我從服務器獲取時間

String orderDate = cOrder.getOrderDate(); // 2016-08-18 00:02:32 

然後將時間轉換爲Date格式

DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"); 
     DateTime dt = dateTimeFormatter.parseDateTime(orderDate); 

我用下面,設置延時

DateTime delay = dt.plusMinutes(10); 

現在我使用postDelayed()

holder.btnCancel.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        holder.btnCancel.setVisibility(View.GONE); 
       } 
      }, delay.getMillis()); 

設置在Button的延遲時間現在,當我10分鐘運行添加到時間該應用程序,CardView上的按鈕應該已經消失,因爲orderDate是(8月18日 - 當前的兩天前)。

我嘗試使用普通的Java時間,而不是JODA,但沒有運氣。

我無法弄清楚問題所在。請求你的指導。

由於

回答

0

postDelayed()documentation

delayMillislong:延遲(毫秒),直到將Runnable 被執行。

讓我們將10分鐘添加到2016-08-18 00:02:32並將其轉換爲毫秒(從時期開始)。這等於類似1471471952000

你這個值傳遞給postDelayed()的延遲,有效地告訴Handler執行此Runnable1471471952000毫秒,這大約相當於47歲。

這沒有什麼意義。

要隱藏你的Button如果給定Date是當前Date之前,你可以做這樣的事情:

String orderDateString = cOrder.getOrderDate(); 
try { 
    Date now = new Date(); 
    Date orderDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", 
      Locale.getDefault()).parse(orderDateString); 

    if(orderDate.before(now)) { 
     holder.btnCancel.setVisibility(View.GONE); 
    } 
} catch (ParseException pe) { 
    pe.printStackTrace(); 
} 
+0

非常感謝。我能夠在你的幫助下解決這個問題。再次感謝:) – Sriram

1

@ user13回答是好postDelayed()作品如何解釋,所以你應該試試這個代碼:

holder.btnCancel.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       holder.btnCancel.setVisibility(View.GONE); 
      } 
     }, (10 * 60 * 1000)); // 10 min * 50 sec * 1000 ms 
           // or delay.getMillis() - dt.getMillis() 
+0

我修改了基於@ user13建議的代碼,以實現所需的結果。非常感謝 :) – Sriram