【发布时间】:2019-09-26 10:21:53
【问题描述】:
我想对来自两个游标的结果进行排序。让我们考虑两个不同的游标是Cursor 和Cursor1。
Cursor 来自CallLog.Call.CONTENT_URI,Cursor1 来自Telephony.Sms.CONTENT_URI。
问题是两个游标组合的列表是两种不同的排序方式。我想使用日期列对这个组合列表进行排序。对不起我的英语不好。
这是我的 LogManager.java
public List<CallLogModel> getLogs() {
List<CallLogModel> logObjectList;
logObjectList = new ArrayList<>();
Cursor cursor = this.context.getContentResolver().query(CallLog.Calls.CONTENT_URI,null, null, null, CallLog.Calls.DATE + " DESC ");
Cursor cursor1 = this.context.getContentResolver().query(Telephony.Sms.CONTENT_URI, null, null, null, Telephony.Sms.DATE + " DESC ");
// ------ Call Log ------
int number = Objects.requireNonNull(cursor).getColumnIndex("number");
int type = cursor.getColumnIndex("type");
int date = cursor.getColumnIndex("date");
int duration = cursor.getColumnIndex("duration");
// ------ Call Log end ------
// ------ SMS Log ------
int smsDate = Objects.requireNonNull(cursor1).getColumnIndexOrThrow(Telephony.Sms.DATE);
int smsNumber = cursor1.getColumnIndexOrThrow(Telephony.Sms.ADDRESS);
int smsType = cursor1.getColumnIndexOrThrow(Telephony.Sms.TYPE);
// ------ SMS Log end ------
while(cursor.moveToNext() && cursor1.moveToNext()) {
CallLogModel log = new CallLogModel(this.context);
// ------ Call Log ------
log.setNumber(cursor.getString(number));
log.setType(cursor.getInt(type));
log.setDuration(cursor.getInt(duration));
log.setDate(cursor.getLong(date));
// ------ Call Log end ------
// ------ SMS Log ------
log.setAddress(cursor1.getString(smsNumber));
log.setSmsDate(cursor1.getLong(smsDate));
log.setSmsType(cursor1.getInt(smsType));
logObjectList.add(log);.
// ------ SMS Log end ------
}
cursor.close();
cursor1.close();
return logObjectList;
}
【问题讨论】:
标签: java android sqlite sorting cursor