2016-09-27 12 views
4

このLong値はDATETIMEとしてデータベースに格納されていますが、必要な日付、日付、および日付に基づいてこれらのレコードをフィルタする方法に関する問題があります。時間はLong値として保存されました。私は今、私は文字列に日付にgetDueDateTime(ロング)からの値を変換しようとすると、それは正確に表示するように動作します。このコードによって、レコードLong(コンストラクタから)をStringに変換した後のフィルタArrayList

public List<DatabaseSource> getListSched() { 
List<DatabaseSource> taskList = new ArrayList<DatabaseSource>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM schedTBL" ; 
    SQLiteDatabase db = dbHelper.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 
    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      DatabaseSource tasks = new DatabaseSource(); 
      tasks.setId(cursor.getInt(0)); 
      tasks.setSubject(cursor.getString(1)); 
      tasks.setDescription(cursor.getString(2)); 
      tasks.setDueDateTime(cursor.getLong(3)); 
      // Adding contact to list 
      taskList.add(tasks); 
     } while (cursor.moveToNext()); 
    } 
    db.close(); 
    // return contact list 
    return taskList; 
} 

マイコンストラクタ

public DatabaseSource(int id, String subject, String description, Long dueDateTime) { 

     this.id = id; 
     this.subject = subject; 
     this.description = description; 
     this.dueDateTime = dueDateTime; 
    } 

を問い合わせます日付と時刻。それらを変換した後、私は日付の文字列(sharedprefから来る)に基づいてレコードをフィルタリングしたいと思います。私のレイアウトの流れは、カレンダーからその日を選択した後、次のアクティビティは、日付は同じで時間の異なるフィルタリングされたレコードを表示します。私はあなたが日付と時刻が正しく変換されますが、それはすべてのレコードを表示し見ることができるように、私はそれを比較した後、同じ日付のレコードを表示したい

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    sharedPreference = new SharedPreferenceUID(); 
    text = sharedPreference.getValue2(mContext); 
    String dateString= DateFormat.format("yyyy-MM-dd hh:mm a", new Date(mSchedLists.get(position).getDueDateTime())).toString(); 
    View v = View.inflate(mContext, R.layout.item_listview, null); 
    TextView subj = (TextView)v.findViewById(R.id.txtSubject); 
    TextView duedate = (TextView) v.findViewById(R.id.txtDueDateTime); 
    subj.setText(mSchedLists.get(position).getSubject()); 
    duedate.setText(dateString); 
    v.setTag(mSchedLists.get(position).getId()); 
    return v; 
} 

リストビューでレコードを表示する方法 はここです時間に関係なくsharedprefに日付を保存しました。カレンダーから日付をクリックし、その日付がsharedprefに保存され、次のアクティビティーが、前のアクティビティーからクリックされた日付に基づいてレコードをすでにフィルターに掛けたとします。

ListView

+1

文字列ではなく、フィルタリングにLong値を使用する必要があります。 – njzk2

+1

あなたはそれを得ることができません、私は日付と時刻の値をデータベースにLongとして保存したので、sharedprefに保存されている日付のみに基づいてクエリを実行すると思います。それは長いもの(日付と時刻の数値変換)です。それをフィルタリングして別のarraylistに送ることができれば、どうすればいいですか? –

+2

SharedPreferenceに日付の値を長く格納できない理由があります。あなたがそれを行うことができれば、データをフィルタリングする方が簡単かもしれません。 –

答えて

0

私はあなたの問題を理解できるように、あなたはこのために、指定された日付に応じて、あなたのレコードをフィルタリングします。 まず、共有日付と同じ日付形式でデータベースの日付の書式を設定します.My/dd/yyyy形式を使用していると仮定します。 次に、同じ形式の日付を使用し、(Date Obj)date.getTime()メソッド(ミリ秒を返す)を使用して、これらのミリ秒を共有日付とミリ秒(データベース日付の)基本的にチェックは日付オブジェクトで文字列ではなく、上記が一致すると日付が同じであることを意味します。 (あなたの文字列をDate objに変換するには、そのConstructorを使用して文字列を渡してください)。

関連する問題