gpt4 book ai didi

java - 将 Long(从构造函数)转换为 String 后过滤 ArrayList

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:20 24 4
gpt4 key购买 nike

我将这个 Long 值作为 DATETIME 存储在数据库中,我有一个关于如何根据所需日期过滤这些记录的问题,日期和时间存储为 Long 值。我通过这段代码查询记录

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;
}

现在,当我尝试将值从 getDueDateTime(长整型)转换为日期和字符串时,它可以准确显示日期和时间。转换后,我想根据日期字符串(来自 sharedpref)过滤记录。我的布局流程是,从日历中选择日期后,下一个 Activity 会显示过滤后的记录,这些记录具有相似的日期但不同的时间。这是我在 ListView 中显示记录的方式

@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 并且下一个 Activity 已经根据从上一个 Activity 中单击的日期过滤了记录。

ListView

最佳答案

据我了解你的问题,你想根据指定的日期过滤你的记录,为此。首先,使用与共享首选项中相同的日期格式格式化数据库日期值,假设您使用的是 MM/dd/yyyy 格式。然后,您将根据相同的格式获得日期,然后使用 (Date Obj)date.getTime() 方法(返回毫秒)现在将这些毫秒(您的共享偏好日期)与毫秒(您的数据库日期)基本上进行比较检查将针对日期对象而不是字符串,如果以上匹配,这意味着日期相同,现在您可以根据它过滤您的记录。(要将您的字符串转换为日期对象,只需使用其构造函数并将字符串传递给它)。

关于java - 将 Long(从构造函数)转换为 String 后过滤 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39714719/

24 4 0