[英]How to sort two different models in one arraylist?
I'm creating the RecyclerView with an array list of the call log, and SMS log model class.我正在使用呼叫日志的数组列表和 SMS 日志 model class 创建 RecyclerView。 Now I want to sort the list by date.
现在我想按日期对列表进行排序。 The below code is returning that array list
return logObjectList
.下面的代码返回该数组列表
return logObjectList
。 Sorry for my bad English.对不起,我的英语不好。
```private List<BaseModel> getCallLog() {
List<BaseModel> logObjectList;
logObjectList = new ArrayList<>();
@SuppressLint("MissingPermission") Cursor cursor = getActivity().getContentResolver().query(CallLog.Calls.CONTENT_URI,
null, null, null, CallLog.Calls.DATE + " DESC ");
int number = Objects.requireNonNull(cursor).getColumnIndex("number");
int type = cursor.getColumnIndex("type");
int date = cursor.getColumnIndex("date");
int duration = cursor.getColumnIndex("duration");
while (cursor.moveToNext()) {
CallModel log1 = new CallModel(getActivity());
log1.setNumber(cursor.getString(number));
log1.setType(cursor.getInt(type));
log1.setDuration(cursor.getInt(duration));
log1.setDate(cursor.getLong(date));
logObjectList.add(log1); }
@SuppressLint("MissingPermission") Cursor cursor1 = Objects.requireNonNull(getActivity()).getContentResolver().query(Telephony.Sms.CONTENT_URI,
null,null,null,Telephony.Sms.DATE + " DESC ");
int smsDate = Objects.requireNonNull(cursor1).getColumnIndexOrThrow(Telephony.Sms.DATE);
int smsNumber = cursor1.getColumnIndexOrThrow(Telephony.Sms.ADDRESS);
int smsType = cursor1.getColumnIndexOrThrow(Telephony.Sms.TYPE);
while (cursor1.moveToNext()){
SmsModel log2 = new SmsModel(getActivity());
log2.setNumber(cursor1.getString(smsNumber));
log2.setDate(cursor1.getLong(smsDate));
log2.setType(cursor1.getInt(smsType));
logObjectList.add(log2);
}
cursor.close();
cursor1.close();
return logObjectList;
} ```
The result now I'm getting is like this:现在我得到的结果是这样的:
1-541-754-3010 19-09-28
0 min 58 secs 17:17:54
+49-89-636-48018 19-09-28
1 min 22 secs 17:16:36
47-73512451 19-09-27
3 min 23 secs 09:25:34
73505073 19-09-26
2 min 02 secs 10:29:54
80046004 19-09-25
0 min 0 secs 13:21:00
1414 19-09-28
Received message 14:25:25
47-73512451 19-09-27
Received message 13:00:12
73505073 19-09-26
Sent message 16:03:17
But I want to order that list using a long date like this:但我想使用这样的长日期来订购该列表:
1-541-754-3010 19-09-28
0 min 58 secs 17:17:54
1414 19-09-28
Received message 14:25:25
+49-89-636-48018 19-09-28
1 min 22 secs 13:16:36
47-73512451 19-09-27
Received message 13:00:12
47-73512451 19-09-27
3 min 23 secs 09:25:34
73505073 19-09-26
Sent message 16:03:17
73505073 19-09-26
2 min 02 secs 10:29:54
80046004 19-09-25
0 min 0 secs 13:21:00
I think I found a solution.我想我找到了解决办法。
Collections.sort(logObjectList, (t1, t2) -> {
long date1 = t1 instanceof CallModel ? ((CallModel) t1).getDate() : ((SmsModel) t1).getDate();
long date2 = t2 instanceof CallModel ? ((CallModel) t2).getDate() : ((SmsModel) t2).getDate();
return Long.compare(date2,date1);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.