这一直困扰着我。 我正在制作一个基本上可以作为学生议程的应用程序。 它由保存作业的数据库支持。

因此,我应用程序中的一项活动在顶部具有CalendarView,在底部具有ListView。 理想情况下,将发生在您单击日历上的某一天时,与该天相关联的分配将出现在ListView中。 但是,当您更改日期时,它只会崩溃,我无法弄清原因。 我已经测试了getDayAssignments()数据库方法,它的执行效果与预期的一样。

那么我该如何工作呢?

这是我的代码:

package com.example.studentagenda;

import java.util.ArrayList;
import java.util.Calendar;

import android.os.Bundle;
import android.app.Activity;
import android.database.Cursor;
import android.view.Menu;
import android.widget.CalendarView;
import android.widget.CalendarView.OnDateChangeListener;
import android.widget.ListView;

public class SchoolCalendar extends Activity {
protected CalendarView calendar;

protected ArrayList<Assignment> dayAssign;
protected ListView assignments;
protected CalendarAdapter calAdapt;
protected DatabaseConnector dBase;
protected Calendar c;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_calendar);
    calendar = (CalendarView)findViewById(R.id.calendarView1);
    assignments = (ListView) findViewById(R.id.AssignListView);
    dayAssign = new ArrayList<Assignment>();

    this.calAdapt = new CalendarAdapter(this, dayAssign);
    assignments.setAdapter(calAdapt);
    initListener();

}
public void initListener()
{
    calendar.setOnDateChangeListener(new OnDateChangeListener(){

        @Override
        public void onSelectedDayChange(CalendarView view,
        int year, int month, int dayOfMonth) {
            getDay(dayOfMonth, month+1, year);
            ;}});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.calendar, menu);
    return true;
}

public void getDay(int day, int month, int year)
{
    int hour, key;
    String desc;

    dBase.open();
    Cursor cur = dBase.getDayAssignments(day, month, year);

    cur.moveToFirst();

    while(cur.isAfterLast() == false)
    {
        day = cur.getInt(cur.getColumnIndex("day"));
        month = cur.getInt(cur.getColumnIndex("month"));
        desc = cur.getString(cur.getColumnIndex("desc"));
        hour = cur.getInt(cur.getColumnIndex("hours"));
        key = cur.getInt(cur.getColumnIndex("_id"));
        Assignment newAssig = new Assignment(day, month, desc, hour, key);
        dayAssign.add(newAssig);

        cur.moveToNext();
    }
    cur.close();
    dBase.close();
}

}

这是我的XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/lined_paper"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Calendar" >

<CalendarView
    android:id="@+id/calendarView1"
    android:layout_width="match_parent"
    android:layout_height="250dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" />

<ListView
    android:id="@+id/AssignListView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/calendarView1"
    android:layout_below="@+id/calendarView1" >
</ListView>

</RelativeLayout>

这是我的数据库调用,如果有帮助的话。

 public Cursor getDayAssignments(int day, int month, int year)
   {
       String whereClause = "day = " + day + " AND month = " + month +" AND        year = " + year;

       return database.query("assignCalendar", new String[]{"_id", "day",         "month", "desc", "hours"}, whereClause, null, null, null, "hours");
   }

  ask by insomnius1 translate from so

本文未有回复,本站智能推荐:

3回复

如何在AlertDialog中显示CalendarView?

我正在尝试在警报对话框中显示CalendarView,但显示的所有内容都是月/年和星期几。 这些是布局文件的内容: 这是我用于将布局添加到AlertDialog的代码: 任何帮助将非常感谢,因为我完全难过。 该应用程序不会给我任何错误继续。
1回复

在Android中更新CalendarView中的输入日期

我有一个Calendarview和一个Edittext。 我希望以DD / MM / YYYY格式输入在编辑文本中输入的日期,并将其设置在Calendarview上。 视图应将当前日期气泡更新为设置的日期。 我已经尝试过: 如何在CalendarView的特定日期上设置焦点,知道日期是
1回复

在android的CalendarView小部件中更改所选日期的颜色

如何在android提供的CalendarView小部件中更改所选日期的颜色。 我似乎没有在文档中找到任何方法。 我可以使用setSelectedDateVerticalBar属性更改VerticalBars,但我想设置一个背景颜色,如图中所示。 我想设置左边的颜色和外观,但我能得
2回复

如何不在CalendarView中设置默认日期?

所以我在Android中有一个calendarView,但它始终默认为当前日期。 我希望它仅显示当前月份,默认情况下未选择日期。 我尝试在线搜索,但没有得到任何答案。 我该如何实现?
1回复

仅通过日历视图在Android App中显示日历?

我想在Android应用中显示日历。 根据一些研究,我发现我们可以使用CalendarView小部件显示日历。 我们无法使用CalendarView创建事件,与会者或其他功能,如果我错了,请纠正我。 另一个选项是通过Intent使用内置的内置日历。 是否有其他方法可以轻松在And
6回复

Android CalendarView减慢了布局

这真让我抓狂。 我的Android应用程序中有一个片段,它使用RelativeLayout进行布局。 问题是由于某种原因需要花费很长时间才能渲染,大约5秒钟就可以在屏幕上加载大约4个元素。 其中一个元素是CalendarView,当我删除它时,它会恢复到正常速度(即:即时)。 我想这
2回复

在扩展日历中获取致命异常

我最初使用日历视图,这很好。 我想在日历视图中显示我的事件,所以我尝试了扩展日历视图库。 当我导入库项目并集成代码时,出现以下错误。 请让我知道是否需要发布代码。 日历视图的XML如下
2回复

UWP C#中的CalendarView显示错误的日期

我在两页上都有CalendarView。 第一页用于通过将所选日期分配给数据库记录来将记录添加到日历。 第二页用于显示分配给所选日期的所有记录。 现在,当我在第一页上通过手动单击日期为产品分配日期时,在第二页上,当所选日期对应于产品日期时,产品会正确显示。 但是,当我在第一页
1回复

Android-在CalendarView中按小时显示事件?

我一直在寻找一个日历,该日历将在android中显示如下图所示的事件。 可以用CalendarView完成吗? 最好的方法是什么? 我希望这不是重复的,我通过stackoverflow寻找了一个类似的答案,但是没有合适的calendarViews起点。 谢谢您的光临。
1回复

在内置的CalendarView中显示数据

我正在使用CalendarView.i正在使用此代码在Calendar中添加事件。 设备离线时,事件保存在设备的区域设置日历中。 现在的问题是:“索尼爱立信”具有在本地存储Calendar-entry的功能。 但是当我使用“ Micromax平板电脑”时,没有在本地存储日历项的功