[英]How to sort the arraylist with two different model class in android?
[英]How to sort two different models in one arraylist?
我正在使用呼叫日志的數組列表和 SMS 日志 model class 創建 RecyclerView。 現在我想按日期對列表進行排序。 下面的代碼返回該數組列表return logObjectList
。 對不起,我的英語不好。
```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;
} ```
現在我得到的結果是這樣的:
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
但我想使用這樣的長日期來訂購該列表:
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
我想我找到了解決辦法。
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.