Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Вывод записей с календаря - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Доступ к базе данных http://www.cyberforum.ru/android-dev/thread1138686.html
Здравствуйте. Имеется три активити (MainActivity (основная), Program (программы подготовки) и Speciality (специальности)), база данных (myDB), которая содержит 3 таблицы и которая создана в...
Программирование Android В строке разный тип исключений Подскажите как отловить в строке 2 разных исключения. Например есть строка new InputStreamReader(url.openStream(); в которой может быть две ошибки EOFException или ConnectException как одну... http://www.cyberforum.ru/android-dev/thread1138670.html
Создание виджета Программирование Android
Хочу создать виджет, который состоит из 6-7 частей, при этом на экране отображает 2-3 разные части(как фрагмнеты в активности). При тапе на любую часть она заменяется на другую. В андроид...
Всегда открытый список Spinner Программирование Android
Как сделать, чтоб у Spinner всегда список был открыт?
Программирование Android Сравнение классов http://www.cyberforum.ru/android-dev/thread1138570.html
Всем привет! Хочу из массива достать элементы определенного класса, но не совсем получается... public abstract class Food { } public class Apple extends Food { }
Программирование Android Перенос файла между программами Здравствуйте. Есть две программы у которых есть одинаковый класс. Первая программа заполняет значения переменных каждого потомка этого класса и сохраняет массив всех потомков в файл в... подробнее

Показать сообщение отдельно
edogaafx
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 42

Вывод записей с календаря - Программирование Android

04.04.2014, 11:37. Просмотров 603. Ответов 0
Метки (Все метки)

Доброго времени суток.
Пишу аппликацию, которая с Гугл календаря выводит текущую запись(в данное время), но выводится только запись с одного календаря( а у меня их 5, для примера).

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
public class Main extends Activity {
 
    //TextView mInfo;
    TextView mEvents;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);     
        setContentView(R.layout.main);
        //mInfo = (TextView)findViewById(R.id.info);
        mEvents = (TextView)findViewById(R.id.events);
        
        String[] calendarName = {"Calendar1", "Calendar2", "Calendar3", "Calendar4", "Calendar5"};
        
        readCalendars(calendarName);
    }
    
    private void readCalendars(String[] calendarName)
    {
        String[] projection =
                new String[]{
                        CalendarContract.Calendars._ID,
                        CalendarContract.Calendars.NAME,
                        CalendarContract.Calendars.ACCOUNT_NAME,
                        CalendarContract.Calendars.ACCOUNT_TYPE};
        Cursor calCursor =
                getContentResolver().
                        query(CalendarContract.Calendars.CONTENT_URI,
                                projection,
                                CalendarContract.Calendars.VISIBLE + " = 1",
                                null,
                                CalendarContract.Calendars._ID + " ASC");
        long calId = -1;
        //String calendarAccount = "";
        for(int i = 0; i < calendarName.length; i++) {
        if (calCursor.moveToFirst()) {
            do {
                long id = calCursor.getLong(0);
                String calName = calCursor.getString(1);
                    if(calName != null && calName.equals(calendarName[i]))
                {
                    //calendarAccount = calName + " " + calCursor.getString(2);
                    calId = id;
                    break;
                }
            } while (calCursor.moveToNext());
        }
        }
        //mInfo.setText(calendarAccount);
        if(calId != -1)
        {
            Calendar currTime = Calendar.getInstance();
            currTime.add(Calendar.HOUR, -4);
            long begin = currTime.getTimeInMillis();
            currTime.add(Calendar.DATE, 30);
            long end = currTime.getTimeInMillis();
            String[] proj =
                    new String[]{
                            CalendarContract.Instances._ID,
                            CalendarContract.Instances.BEGIN,
                            CalendarContract.Instances.END,
                            CalendarContract.Instances.EVENT_ID,
                            CalendarContract.Instances.DESCRIPTION,
                            CalendarContract.Instances.EVENT_LOCATION,
                            CalendarContract.Instances.TITLE};
 
 
            Uri.Builder builder = CalendarContract.Instances.CONTENT_URI.buildUpon();
            ContentUris.appendId(builder, begin);
            ContentUris.appendId(builder, end);
 
            Cursor cursor = getContentResolver().query(builder.build(),
                    proj, CalendarContract.Instances.CALENDAR_ID + " =" + calId,
                    null, "begin ASC");
 
            String events = "";
            if (cursor.getCount() > 0)
            {
                if(cursor.moveToFirst())
                {
                    do
                    {
                        long eventId = cursor.getLong(3);
                        events += getEventInfo(eventId,cursor.getLong(1),cursor.getLong(2),cursor.getString(4),cursor.getString(5),cursor.getString(6)) + "\n";
                    } while(cursor.moveToNext());
                }
            }
            mEvents.setText(events);
        }
    }
    
    @SuppressLint("SimpleDateFormat")
    private String getEventInfo(long eventId,long startTime, long endTime,String description, String location,String title)
    {
            String eventInfo = "";
            {
                DateFormat df = new SimpleDateFormat("HH:mm");
                String start = df.format( new Date(startTime));
                String end = df.format( new Date(endTime));
                eventInfo = start + "-" + end + " Аудитория: "+ location + "\nЛекция: " + title + "\nПреподаватель: " + description;
            }
        return eventInfo;
    }
}
В таком раскладе, выводит даныне только с последнего календаря.
Читал про ListView, переделал код под него, но получал ошибки, мол аппликация совсем не запускалась.
Примерно так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        ListView listView = (ListView) findViewById(R.id.listView);
    final ArrayList<String> mEvents = new ArrayList<String>();
    final ArrayList<String> mInfo = new ArrayList<String>();
    final String[] calendarName = {"Calendar1", "Calendar2", "Calendar3", "Calendar4", "Calendar5"};
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        final ArrayAdapter<String> adapter;
        adapter = new ArrayAdapter<String>(this,
                R.id.listView, mEvents);
        listView.setAdapter(adapter);
        
        readCalendars(calendarName);
    }
 
        private void readCalendars(String[] calendarName) {
        //Тут всё так-же как и в предыдущем коде, только вместо
                mEvents.setText(events);
                применяю
                mEvents.add(events);
    }
Посоветуйте, пожлуйста, как можно реализовать данную аппликацию или исправить ошибки..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru