1

Please guide me how to apply condition on call type only missed call number add in list . And secondly hot to sort this list by date wise and how to delete seleted items from list.

public void getlog()

    Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI, null,
            null, null, null);
    int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
    int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE);
    int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
    int name = managedCursor.getColumnIndex(CallLog.Calls.CACHED_NAME)

    int numberOfRows = managedCursor.getCount();
    if (numberOfRows > 0) {
        if (managedCursor.moveToFirst()) {
            do {
                    String phNumber = managedCursor.getString(number);
                    String callType = managedCursor.getString(type);
                    String callDate = managedCursor.getString(date);
                    Date callDayTime = new Date(Long.valueOf(callDate));
                    String namec = managedCursor.getString(name);

                    if (namec == null) {
                        namec = "Unknown";
                    }

                    HashMap<String, String> hm = new HashMap<String, String>();
                    hm.put("listview_title", namec);
                    hm.put("listview_number", phNumber);
                    hm.put("listview_date", String.valueOf(callDayTime));
                    hm.put("listview_image", image);
                if(type == CallLog.Calls.MISSED_TYPE){ aList.add(hm);

            }
            while (managedCursor.moveToNext());
        }
        String[] from = {"listview_image", "listview_title", "listview_number", "listview_date"};
        int[] to = {R.id.listview_image, R.id.listview_item_title, R.id.listview_item_number, R.id.listview_item_time};
        SimpleAdapter simpleAdapter = new SimpleAdapter(getBaseContext(), aList, R.layout.custmlv, from, to);
        androidListView.setAdapter(simpleAdapter);
        androidListView.setOnItemLongClickListener(this);
        managedCursor.close();
         Collections.reverse(aList);
    }

}
Abdul Waheed
  • 4,540
  • 6
  • 35
  • 58
Usman Arshad
  • 153
  • 1
  • 10

2 Answers2

1

Replace your conditional statement with below code

    String dir = null;
    int dircode = Integer.parseInt(callType);


    switch (dircode) {
        case CallLog.Calls.OUTGOING_TYPE:
            dir = "OUTGOING";
            break;

        case CallLog.Calls.INCOMING_TYPE:
            dir = "INCOMING";
            sb.append("\nPhone Number:--- " + phNumber + " \nCall Type:--- " + dir + " \nCall Date:--- " + callDayTime + " \nCall duration in sec :--- " + callDuration);
            sb.append("\n----------------------------------");
            miss_cal.setText(sb);
            break;

        case CallLog.Calls.MISSED_TYPE:
            dir = "MISSED";
            break;
    }

The problem with your code is you are testing condition with variable 'type' This is your column name rather column value. You should have checked callType, as you are also getting call type. Convert callType String to in and then campare as you comparing with CallLog.Calls.MISSED_TYPE: Hope that helps you.

Abdul Waheed
  • 4,540
  • 6
  • 35
  • 58
0
    int dircode = Integer.parseInt(callType);
    switch (dircode) 
    {
    case CallLog.Calls.OUTGOING_TYPE:
    break;
    case CallLog.Calls.INCOMING_TYPE:
    break;
    case CallLog.Calls.MISSED_TYPE:
          HashMap<String, String> hm = new HashMap<String, String>();
           hm.put("listview_title", namec);
           hm.put("listview_number", phNumber);
           hm.put("listview_date", String.valueOf(callDayTime));
           hm.put("listview_image", image);
           aList.add(hm);

            break;
     }
Usman Arshad
  • 153
  • 1
  • 10