2017-03-25 5 views
7

私の古いアプリの一部は廃止されましたが、再構築しようとしています。基本的には月表示のカレンダーです。GridViewのCalendarビュー

public View getView(int position, View view, ViewGroup parent) { 
    Date date = getItem(position); 
    int day = date.getDate(); 
    int month = date.getMonth(); 
    int year = date.getYear(); 
} 

int day = date.getDate(); int month = date.getMonth(); int year = date.getYear(); が廃止されました: これは私のGridViewのアダプタの一部です。 Dateの代わりにCalendarクラスを使用しようとしていますが、同じことができません。私は日、月または年取得のために、私はこれを使用することができることを知っている:

Calendar calendar = Calendar.getInstance(); 
calendar.get(Calendar.DAY_OF_MONTH); 

が、私はこの行を変換する方法がわからない:

Date date = getItem(position); 

Calendarで使用します。ここで

答えて

1

あなたはCalendarオブジェクトにDateオブジェクトを変換する方法である:

Calendar cal = Calendar.getInstance(); 
cal.setTime(date); 

その後(あなたが言ったように)あなたが行うことができます:

int day = cal.get(Calendar.DAY_OF_MONTH); 
int month = cal.get(Calendar.MONTH) 
int year = cal.get(Calendar.YEAR); 
+0

ありがとう、カレンダーオブジェクトでのみDateオブジェクトを使用しないと「ネイティブ」にできないのですか? –

+0

問題ありません。 'Date'を使いたくない場合は、アダプタデータセットを' Calendar'に変更し、 'getItem()'を 'Calendar'を返すようにする必要があります。 – 345

2

あなたのコード行を使用することができます。

この行を置き換えるだけです。

Date date = getItem(position); 
このラインと

:ここ

Calendar calendar = Calendar.getInstance(); 
Date date = calendar.getTime(); 

はあなたのための完全な例です:

Calendar calendar = Calendar.getInstance(); 
Date date = calendar.getTime(); 
int day = calendar.get(Calendar.DAY_OF_MONTH); 
int month = calendar.get(Calendar.MONTH); 
int year = calendar.get(Calendar.YEAR); 
1

まずあなたがつもりはカレンダーを参照したいです。あなたはそれをやった後は、信頼できるおよび/または公式なソースから描画答えを探していDate date = calendar.getTime

public View getView(int position, View view, ViewGroup parent) { 
    Calendar calendar = Calendar.getInstance(); 
    Date date = calendar.getTime(); 
    int day = calendar.get(Calendar.DAY_OF_MONTH); 
    int month = calendar.get(Calendar.MONTH)  
    int year = calendar.get(Calendar.YEAR); 
} 
1

言うことができます。主要なソースに

[OK]を

  1. https://docs.oracle.com/javase/7/docs/api/java/util/Date.html

  2. https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html

Dateは廃止されていません。ほんのいくつかの方法。

ので、ここで

public View getView(int position, View view, ViewGroup parent) { 

    Date date = getItem(position); 
    long ms = date.getTime();https://docs.oracle.com/javase/7/docs/api/java/util/Date.html#getTime() 
    Calendar calendar = Calendar.getInstance();//allowed 
    calendar.setTimeInMillis(ms);//allowed https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#setTimeInMillis(long) 
    //calendar.setTime(date); is also allowed https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#setTime(java.util.Date) 
    int day = calendar.get(Calendar.DAY_OF_MONTH);//allowed 
    int month = calendar.get(Calendar.MONTH);//allowed 
    int year = calendar.get(Calendar.YEAR);//allowed 
} 
0

DateからCalendarに変換するためのサンプルコードです。

public View getView(int position, View view, ViewGroup parent) { 
    Date date = getItem(position); 
    // convert a Date object to a Calendar object 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTime(date); 

    int day = calendar.get(Calendar.DAY_OF_MONTH); 
    int month = calendar.get(Calendar.MONTH); 
    int year = calendar.get(Calendar.YEAR); 
}