私が書いているもののためにカスタムCursorAdapterを作成しようとしています。私がやっていることの計画には、アラームが鳴る日時でいっぱいのSQLiteデータベースが含まれます。(SQLiteには実際にはDATETIMEデータ型がないため、INTとして格納される前にすべてUnix時間に変換されます。)カスタムカーソルアダプターを作成するこの例を見つけて、それを取り入れられるように適応させようとしました。 Unix Timeエントリを作成し、人間が読める形式に変換します。しかし、私は少し障害にぶつかりました。私が持っているものが私が必要としているものであるかどうかはわかりません。これが私がこれまでに得たものです:
import java.util.GregorianCalendar;
import android.content.Context;
import android.database.Cursor;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Filterable;
import android.widget.TextView;
/**
* @author Dave Smith
*
*/
public class DateTimeCursorAdapter extends SimpleCursorAdapter implements Filterable {
private Context context;
private int layout;
/**
* @param context
* @param layout
* @param c
* @param from
* @param to
* @param flags
*/
public DateTimeCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to, int flags) {
super(context, layout, c, from, to, flags);
this.context = context;
this.layout = layout;
}
public View newView(Context context, Cursor cursor, ViewGroup parent){
Cursor c = getCursor();
final LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(layout, parent, false);
/*int nameCol = c.getColumnIndexOrThrow("ALARMS.DATETIME");
String dateTime = c.getString(nameCol);
dateTime = convertFromUnixTime(Long.parseLong(dateTime)).toString();
TextView dateTimeText = (TextView) v.findViewById(R.id.dateandtime);
if (dateTimeText != null){
dateTimeText.setText(dateTime);
}*/
return v;
}
public void bindView(Context context, Cursor c, View v){
int nameCol = c.getColumnIndexOrThrow("ALARMS.DATETIME");
String dateTime = c.getString(nameCol);
dateTime = convertFromUnixTime(Long.parseLong(dateTime)).toString();
TextView dateTimeText = (TextView) v.findViewById(R.id.dateandtime);
if (dateTimeText != null){
dateTimeText.setText(dateTime);
}
}
private GregorianCalendar convertFromUnixTime(long unixTime)
{
GregorianCalendar cal = new GregorianCalendar();
cal.setTimeInMillis(unixTime);
return cal;
}
}
これにより、データベースからさまざまなUnixTimeエントリをすべて読み込んで、MM / DD / YYYY HH:MM形式(または現在のロケールで受け入れられる形式)で出力できるようになりますか?