0

我有一个像这样的 DateAapter 类..

 public class DateAdapter extends BaseAdapter
    { 
    ...
    }

我在我的“mainActivity”的 12 个不同的地方调用这个 DateApapter,方法是使用constructor这个结果并将这个结果存储在一个 DateApapter 对象“mDefaultAdapter”中,就像这样..

mDefaultAdapter = new DateAdapter(this,days,sysDate,disablePastDays, selectedDateTypeDf);

并像这样将 mDefaultAdapter 的各种结果存储在 ArrayList 中。

ArrayList<DateAdapter> mDefaultAdapterList = new ArrayList<DateAdapter>();
mDefaultAdapterList.add(mDefaultAdapter);

现在来解决问题,

  • 在我的第一次调用 DateAdapter 构造函数中,它返回一月份的详细信息,我将此结果(一月)添加到 ArrayList 中,它的工作正常。现在 ArrayList 有一个项目,即一月份的详细信息。
  • 但是当我将第二个结果(二月)调用到 arrayList 时,它也覆盖了第一个结果。现在 ArrayList 有两个项目,这两个项目都是二月份的详细信息。
  • 这意味着 DateAdapter 的最后一个结果填充了整个 ArrayList。最后我只从 ArrayList 获得了 12 月的详细信息。

为什么 DateAdapter 结果在以前的 ArrayList 项中被覆盖?我没有在整个程序中使用任何静态变量或方法。请帮我解决这个问题。谢谢..

4

2 回答 2

1

我不太确定您的适配器发生了什么。也许您对ArrayList所有适配器使用相同的对象。

但我认为你应该重新考虑你的方法。

这就是我要做的。

1-将日历事件存储在SQLite数据库中。

2- 在您的FragmentPagerAdapter中,将位置传递给您的日历Fragment

3- 在您的日历Fragment中,检索位置(0:1 月 - 11:12 月)并查询您的数据库以检索事件。

于 2013-01-24T08:56:17.390 回答
0

It was my mistake.. The problem is Illegal object reference overwrite my previous ArrayList Items. I saved myself by making a separate object for Date Adapter.

于 2013-03-12T05:05:41.783 回答