如何在同一个对象[0]中保存两个或多个数据

时间:2017-09-14 09:09:42

标签: java android date timestamp

我将日期数据(来自CalendarView对象)发送到第二个活动。 这是第一项活动:

String date = year + "/" + month + "/" + day;
intent=new Intent(Main3Activity.this,MainActivity.class);
intent.putExtra("date",date);

我通过将其转换为第二个活动中的时间戳来获得它。所以,我可以选择一个日期,我可以在第二个活动中看到它,它可以正常使用1个日期。这是第二项活动:

// Create objects
Object[] item;
String s;
DateFormat formatter;
Date date2;
Timestamp timeStampDate;
List<Object[]> data;
long myTime;

myTime11 = sharedPreferences.getLong("long1",0);
s= getIntent().getStringExtra("date");
if(s != null) {
    formatter = new SimpleDateFormat("yyyy/MM/dd");
    try {
        date2 = formatter.parse(s);
        timeStampDate = new Timestamp((date2.getTime()));
        myTime = timeStampDate.getTime();
        editor.putLong("long1",myTime);
        editor.commit();
    } catch (ParseException e) {
        e.printStackTrace();
    }

    item = new Object[COLUMN_NAMES.length];
    item[0] = myTime11;
    item[1] = 3;
    item[2] = 6;
    item[3] = 9;
    data.add(item);
}
    item = new Object[COLUMN_NAMES.length];
    item[0] = timestamp;
    item[1] = 0;
    item[2] = 0;
    item[3] = 0;
    data.add(item);

    cursor.addAll(data);
    return item;
}

但是,当我选择第二个日期时,第一个数据会消失。

例如,我选择13/09/2017。好的,它通过但是如果我想再次通过第一个活动从CalendarView对象传递14/09/2017,那么我无法看到13/09/2017。它改为2017年9月14日,我只能看到一个日期是14/09/2017。我该如何解决这个问题?

编辑:我认为这是因为item [0] = myTime只是一个。如果我添加两个这样的,我可以并排传递两个日期,但我希望这适用于所有选定的日期。

Edit2:我使用GitHub中的库。我的大多数代码与此类似:link。我刚刚更改了具体细节。

Edit3:当我通过建议添加这些来解决问题时,我得到了这些错误。我该如何解决这个问题?

data.add((Object[]) data.get(0)[0]);
data.add((Object[]) data.get(1)[0]);
  

java.lang.IndexOutOfBoundsException:Index:0,Size:0

data.add( 0, (Object[]) item[0]);
data.add( 1, (Object[]) item[0]);
  

java.lang.ClassCastException:java.lang.Long无法强制转换为java.lang.Object []

1 个答案:

答案 0 :(得分:2)

您下次将Object数组添加到名为item的数组中,然后将其添加到名为List的{​​{1}}中。

根据创建data的时间,这将导致第二(和第三)日期的问题消失。如果在代码中创建data作为私有字段(在第二个操作运行之前)。像这样:

data

然后使用您的代码和// in the class file: private List<Object[]> data = new ArrayList<Object[]>(); 对象选择几个日期。当您想要获取日期时,请在新的操作/方法中使用它:

CalendarView

或者您可以使用它从数据列表中获取指定的日期:

public void printDates()
{
    System.out.println(data.get(0)[0]); // gives the first date 2017/09/13
    System.out.println(data.get(1)[0]); // gives the second date 2017/09/14
}

然后代码中的其他地方:

public Object getLastIthDate(int i)
{
    return data.get(list.size() - i - 1);
}

编辑:Edit3的错误解决方案: 只需将整个项目对象添加到数据中,就像在原始代码中一样 System.out.println(getLastIthDate(1)); // gives the second last date that was saved: 2017/09/13 System.out.println(getLastIthDate(0)); // gives the last date that was saved: 2017/09/14 然后您就可以在代码中的其他位置使用data.add(item);