這是我見過的最糟糕的錯誤。我是通過以下方式獲取CallLogs的。
ArrayList<HashMap<String, String>> callLog= new ArrayList< >();
HashMap<String, String> data = new HashMap<>()。
Cursor c = activity.getContentResolver().query(CallLog.Calls. CONTENT_URI, null, null, null, CallLog.Calls.DATE " DESC ")。)
字串phoneNumber,type,date,duration,name。
while(c.moveToNext()){
phoneNumber = c.getString(c.getColumnIndex(CallLog.Calls.NUMBER))。
type = c.getString(c.getColumnIndex(CallLog.Calls.TYPE))。
date = c.getString(c.getColumnIndex(CallLog.Calls.DATE));
duration = c.getString(c.getColumnIndex(CallLog.Calls.DURATION))。
name = c.getString(c.getColumnIndex(CallLog.Calls.CACHED_NAME))。
data.put(Constants.PHONE_NUMBER, phoneNumber);
data.put(Constants.NAME, name);
data.put(Constants.DATE, date);
data.put(Constants.TYPE, type);
data.put(Constants.DURATION, duration)。
callLog.add(data)。
}
c.close()。
return callLog;
我試圖將其設定為配接器。下面是我如何將它們與配接器聯系起來的
ContactViewAdapter contactViewAdapter = new ContactViewAdapter(getActivity(), getActivity(),CallLog(getActivity()),"contact")。)
recyclerViewCallLog.setAdapter(contactViewAdapter)。
因為配接器類有點大,所以我沒有添加所有的背景關系。我只是在這里添加建構式。
public class ContactViewAdapter extends RecyclerView. Adapter<ContactViewAdapter.MyViewHolder> {
Context背景關系。
ArrayList<HashMap<String, String>> list;
字串型別。
活動活動。
public ContactViewAdapter(Activity activity,Context context, ArrayList<HashMap<String,String> > list, String type){
this.activity = activity;
this.context = context;
this.list = list;
this.type = type。
這對于一個Android應用程式的開發者來說是可以理解的。該錯誤被列舉如下:
- 實際上,我正在使用多個使用Adapter的RecyclerView。他們的布局是密切相同的,這就是為什么我選擇使用單一的Adapter來減少源代碼的數量。對于Contacts,它作業得很好。但在CallLog中出現了這個錯誤。
- 該方法可以回傳所有的通話記錄。在DialerFragment(我呼叫該方法的地方),我也能看到所有的CallLog。當串列到了Adapter時,只有單個CallLog被回傳。
我正在從Logcat串列中洗掉phoneNumber。
[{date=123123, name=null, phoneNumber= 4365643, duration=45, type=1}, {date=43743, name=null, phoneNumber= 4543, duration=45, type=1}, {date=23452, name=null, phoneNumber= 3245432, duration=45, type=1}, {日期=234523, name=null, phoneNumber= 3245432, duration=45, type=1}, {日期=1617550988892, name=null, phoneNumber= 2345, duration=45, type=1}, {日期=1617550923452388892, name=null, phoneNumber= 88018115723457032, duration=45, type=1}, {date=16175502345988892, name=null, phoneNumber= 88018234511577032, duration=45, type=1}, {date=16175509888234592, name=null, phoneNumber= 88018112345577032, duration=45, type=1}, {date=16172345550988892, name=null, phoneNumber= 88018112345577032, duration=45, type=1}, {date=16175234550988892, name=null, phoneNumber= 88018234511571237032, duration=45, type=1}
logcat是來自方法。我在片段(活動)頁面中也得到了同樣的日志。配接器中的Logcat。
2021-09-19 14:00: 07. 995 20558-20558/com.contact D/LOGCAT。{date=1617550988892, name=null, phoneNumber= 88018115747032, duration=45, type=1}.
2021-09-19 14:00:08. 012 20558-20558/com.contact D/LOGCAT。{date=1617550988892, name=null, phoneNumber= 88018115747032, duration=45, type=1}.
2021-09-19 14:00:08. 026 20558-20558/com.contact D/LOGCAT。{date=1617550988892, name=null, phoneNumber= 88018115747032, duration=45, type=1}.
2021-09-19 14:00:08. 040 20558-20558/com.contact D/LOGCAT。{date=1617550988892, name=null, phoneNumber= 88018115747032, duration=45, type=1}.
2021-09-19 14:00:08。 054 20558-20558/com.contact D/LOGCAT。{date=1617550988892, name=null, phoneNumber= 88018115747032, duration=45, type=1}.
2021-09-19 14:00:08。 068 20558-20558/com.contact D/LOGCAT。{date=1617550988892, name=null, phoneNumber= 88018115747032, duration=45, type=1}.
2021-09-19 14:00:08. 082 20558-20558/com.contact D/LOGCAT。{date=1617550988892, name=null, phoneNumber= 88018115747032, duration=45, type=1}.
2021-09-19 14:00:08. 098 20558-20558/com.contact D/LOGCAT。{date=1617550988892, name=null, phoneNumber= 88018115747032, duration=45, type=1}.
2021-09-19 14:00:08. 112 20558-20558/com.contact D/LOGCAT。{date=1617550988892, name=null, phoneNumber= 88018115747032, duration=45, type=1}.
2021-09-19 14:00:08. 126 20558-20558/com.contact D/LOGCAT。{date=1617550988892, name=null, phoneNumber= 88018115747032, duration=45, type=1}.
2021-09-19 14:00:08。 140 20558-20558/com.contact D/LOGCAT。{date=1617550988892, name=null, phoneNumber= 88018115747032, duration=45, type=1}.
2021-09-19 14:00:08。 154 20558-20558/com.contact D/LOGCAT。{date=1617550988892, name=null, phoneNumber= 88018115747032, duration=45, type=1}。
不要在意日期。它們的格式是正確的。它們的單位是毫秒。也不在乎數字。我已經在這些數字中添加了一個數字(字符)。我是這樣稱呼它的。
@Override
public void onBindViewHolder(@NonNullMyViewHolder holder, int position) {
String phoneNumber = list.get(position).get(Constants.PHONE_NUMBER)。
String name = list.get(position).get(Constants.NAME)。
Bitmap imgBitmap = null;
String photo = null;
Log.d("LOGCAT", String.valueOf(list.get(position)))。)
但是為什么他們每次都會回傳相同的值呢?
uj5u.com熱心網友回復:
而不是:
ArrayList<HashMap<String, String>> callLog= new ArrayList< > ();
HashMap<String, String> data = new HashMap<>()。
Cursor c = activity.getContentResolver().query(CallLog.Calls. CONTENT_URI, null, null, null, CallLog.Calls.DATE " DESC ")。)
字串phoneNumber,type,date,duration,name。
while(c.moveToNext()){
phoneNumber = c.getString(c.getColumnIndex(CallLog.Calls.NUMBER))。
type = c.getString(c.getColumnIndex(CallLog.Calls.TYPE))。
date = c.getString(c.getColumnIndex(CallLog.Calls.DATE));
duration = c.getString(c.getColumnIndex(CallLog.Calls.DURATION))。
name = c.getString(c.getColumnIndex(CallLog.Calls.CACHED_NAME))。
data.put(Constants.PHONE_NUMBER, phoneNumber);
data.put(Constants.NAME, name);
data.put(Constants.DATE, date);
data.put(Constants.TYPE, type);
data.put(Constants.DURATION, duration)。
callLog.add(data)。
}
c.close()。
return callLog;
嘗試 :
ArrayList<HashMap<String, String>> callLog= new ArrayList< > ();
Cursor c = activity.getContentResolver().query(CallLog.Calls. CONTENT_URI, null, null, null, CallLog.Calls.DATE " DESC ")。)
字串phoneNumber,type,date,duration,name。
while(c.moveToNext()){
phoneNumber = c.getString(c.getColumnIndex(CallLog.Calls.NUMBER))。
type = c.getString(c.getColumnIndex(CallLog.Calls.TYPE))。
date = c.getString(c.getColumnIndex(CallLog.Calls.DATE));
duration = c.getString(c.getColumnIndex(CallLog.Calls.DURATION))。
name = c.getString(c.getColumnIndex(CallLog.Calls.CACHED_NAME))。
HashMap<String, String> data = new HashMap<> ()。
data.put(Constants.PHONE_NUMBER, phoneNumber)。
data.put(Constants.NAME, name);
data.put(Constants.DATE, date);
data.put(Constants.TYPE, type);
data.put(Constants.DURATION, duration);
callLog.add(data)。
}
c.close()。
return callLog;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/328393.html
標籤:
