2

I want to display the events for only one week in the listView,but I got all the events and it is displaying in the listview.

I am using this code to get the events for particular date ,but is not getting any events from calendar.The event count is 0.I am struct with this problem! How to get events for particular date or week?

public class Meeting extends Activity {
    public ConferenceAdapter adapter;
    ListView meetingListView;
    static Cursor cursor;
    private  String description = null;
    private  String where = null;
     public String[] number;
    static List<GoogleCalendar> gCalendar = null;
    private static String startString;
    private static String endString;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ec_meeting);
        adapter = new ConferenceAdapter(this);
        readCalendar(this);
        meetingListView = (ListView) findViewById(R.id.meetinglistView);
        meetingListView.setAdapter(new MeetingListViewAdapter(Meeting.this, adapter, gCalendar));       
        meetingListView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) {
                TextView descriptionId1 = ((TextView) view.findViewById(R.id.descriptionmeeting));
                TextView where=((TextView) view.findViewById(R.id.wheretextView));
                TextView tittle = ((TextView) view.findViewById(R.id.titlemeeting));                
                Meeting.this.where=where.getText().toString();
                description = descriptionId1.getText().toString();



                StringBuffer numbers =new StringBuffer();               
                String a=Meeting.this.where.replaceAll("-","").replaceAll(" ", "").replaceAll("\\(","").replaceAll("\\)","")+description.replaceAll("-","").replaceAll(" ", "").replaceAll("\\(","").replaceAll("\\)","");                      
                if(a.isEmpty()){
                    Toast.makeText(getApplicationContext(),"Sorry no conference numbers found", Toast.LENGTH_LONG).show();
                }else{              
                Pattern p = Pattern.compile("[0-9]+[0-9]");
                        Matcher m = p.matcher(a);                       
                        while (m.find()) {                           
                              Meeting.this.addComma(numbers,m.group().toString());                    
                        }
                        number = numbers.toString().split(",");                     
                        Intent intent = new Intent(Meeting.this,EcConferenceNumber.class);                      
                        intent.putExtra("strings", number);                     
                        startActivity(intent);                      
                        finish();
                                    }
            }
        });
    }

public void addComma(StringBuffer updatedString,String value){
    if(updatedString.length() >0 && updatedString != null ){
        updatedString.append(",");
    }
    updatedString.append(value);
}
    public static void readCalendar(Context context) {

        ContentResolver contentResolver = context.getContentResolver();

        Calendar c_start = Calendar.getInstance();
        c_start.set(2014,2,4,0,0); //Note that months start from 0 (January)   
        Calendar c_end = Calendar.getInstance();
        c_end.set(2013,2,11,0,0); //Note that months start from 0 (January)


        String selection = "((dtstart >= "+c_start.getTimeInMillis()+") AND (dtend <= "+c_end.getTimeInMillis()+"))";

        String[] selectionArgs = new String[] {startString, endString};
        cursor = contentResolver.query(Uri.parse("content://com.android.calendar/events"), 
                (new String[] { "calendar_id", "title", "description", "dtstart", "dtend", "eventLocation"})
                ,null,selectionArgs,selection);




        gCalendar = new ArrayList<GoogleCalendar>();
        try {
            System.out.println("Count=" + cursor.getCount());
            if (cursor.getCount() > 0) {
                System.out.println("the control is just inside of the cursor.count loop");
                while (cursor.moveToNext()) {
                    GoogleCalendar googleCalendar = new GoogleCalendar();
                    gCalendar.add(googleCalendar);
                    int calendar_id = cursor.getInt(0);
                    googleCalendar.setCalendar_id(calendar_id);
                    String title = cursor.getString(1);
                    googleCalendar.setTitle(title);
                    String description = cursor.getString(2);
                    googleCalendar.setDescription(description);
                    String dtstart = cursor.getString(3);
                    googleCalendar.setDtstart(dtstart);
                    String dtend = cursor.getString(4);
                    googleCalendar.setDtend(dtend);
                    String eventlocation = cursor.getString(5);
                    googleCalendar.setEventlocation(eventlocation);

    }
            }
        } catch (AssertionError ex) {
            ex.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }   
}

// inner class for setting the home screen value to the list view
class MeetingListViewAdapter extends BaseAdapter {
    private List<GoogleCalendar> calendars = null;
    LayoutInflater inflater = null;
    public MeetingListViewAdapter(Activity activity, ConferenceAdapter adapter, List<GoogleCalendar> gCalendar) {
        this.calendars = gCalendar;
        inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    @Override
    public int getCount() {
        return calendars.size();
    }
    @Override
    public Object getItem(int position) {
        return position;
    }
    @Override
    public long getItemId(int position) {
        return position;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View vi = convertView;
        if (convertView == null)
            vi = inflater.inflate(R.layout.calendar_events, null);      
        TextView titleNameTV = (TextView) vi.findViewById(R.id.titlemeeting);
        TextView timeTV = (TextView) vi.findViewById(R.id.profileStepCountTV);
        TextView whereTv=(TextView) vi.findViewById(R.id.wheretextView);
        TextView descriptionTV = (TextView) vi.findViewById(R.id.descriptionmeeting);     
        GoogleCalendar calendar = calendars.get(position);
        titleNameTV.setText(calendar.getTitle());
        descriptionTV.setText(calendar.getDescription());
        whereTv.setText(calendar.getEventlocation());   
        return vi;
    }


}

Any answer will be helpfull for me to proceed.

user2841300
  • 353
  • 1
  • 7
  • 23

1 Answers1

4

Replace this code :

ContentResolver contentResolver = context.getContentResolver();

        Calendar c_start = Calendar.getInstance();
        c_start.set(2014,2,4,0,0); //Note that months start from 0 (January)   
        Calendar c_end = Calendar.getInstance();
        c_end.set(2013,2,11,0,0); //Note that months start from 0 (January)


        String selection = "((dtstart >= "+c_start.getTimeInMillis()+") AND (dtend <= "+c_end.getTimeInMillis()+"))";

        String[] selectionArgs = new String[] {startString, endString};
        cursor = contentResolver.query(Uri.parse("content://com.android.calendar/events"), 
                (new String[] { "calendar_id", "title", "description", "dtstart", "dtend", "eventLocation"})
                ,null,selectionArgs,selection);

With this:

Uri l_eventUri;
    Calendar calendar = Calendar.getInstance();
    if (Build.VERSION.SDK_INT >= 8) {
        l_eventUri = Uri.parse("content://com.android.calendar/events");
    } else {
        l_eventUri = Uri.parse("content://calendar/events");
    }
    ContentResolver contentResolver = context.getContentResolver();

    String dtstart = "dtstart";
    String dtend = "dtend";

    String[] l_projection = new String[] { "title", "dtstart", "dtend" };

    SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yy");
    // Date dateCC = formatter.parse("04/27/2013");
    Date dateCC = formatter.parse("11/13/2013");
    calendar.setTime(dateCC);

    long after = calendar.getTimeInMillis();

    SimpleDateFormat formatterr = new SimpleDateFormat("MM/dd/yy hh:mm:ss");

    Calendar endOfDay = Calendar.getInstance();
    Date dateCCC = formatterr.parse("17/13/2013 23:59:59");
    // Date dateCCC = formatterr.parse(startDate + " 23:59:59");
    endOfDay.setTime(dateCCC);

    cursor= contentResolver.query(l_eventUri, new String[] { "title",
            "dtstart", "dtend" }, "(" + dtstart + ">" + after + " and "
            + dtend + "<" + endOfDay.getTimeInMillis() + ")", null,
            "dtstart ASC");
Srikanth Roopa
  • 1,782
  • 2
  • 13
  • 19
  • what is dtstart ASC here? I couldnt understand srikanth – Deepak Nov 14 '13 at 04:47
  • could you tell me how to get the start time and end time of the event? – user2841300 Nov 25 '13 at 05:02
  • i am using dtstart and dtend for getting the date, what is the column name for start time and end time? – user2841300 Nov 25 '13 at 05:03
  • refer this [Calendar Api](http://developer.android.com/guide/topics/providers/calendar-provider.html) – Srikanth Roopa Nov 25 '13 at 15:25
  • Using this, I am not getting results as expected, I have just got some of the main holidays event from calendar. Can you please help me to get list of event in range from all the event. – Pratik Dasa Mar 28 '14 at 05:08
  • Hi Pratik i think this link helps u [Calendar](http://www.roman10.net/android-tutorialprogramming-with-calendar/) make sure u pass the right calendar ID to get the events – Srikanth Roopa Mar 28 '14 at 05:46