on添加在ArrayList中替换的前一个元素

时间:2014-04-18 11:53:10

标签: java android arraylist

做了调试。我可以在entryLogs.add(dl)之后清楚地看到;在entryLogs的值。第一个数据被替换,第二个数据被插入到ArrayList中。

正在发生的事情是每次我输入新值时,它都会将其添加到ArrayList中,但将第一个条目替换为与第二个条目相同。 例如: 我添加A和onclick它添加A. 再次,添加B并onclick它添加B. 但是在Arraylist中,价值是[2014年4月17日:20:29 B,2014年4月17日:20:29 B]

请建议需要做什么。 可以在此处找到整个代码:https://github.com/tirthoguha/DroidProject/blob/myDiary/src/com/example/s0217980_diary/Monday_fragment.java

entryLogs = new ArrayList<DiaryLogs>();

            timeText = (EditText) getView().findViewById(R.id.dateTimeEText);

            entryText = (EditText) getView().findViewById(R.id.diaryEntryEText);

            Button saveBtn = (Button) getView()
                    .findViewById(R.id.saveDiaryEntryBtn);
            saveBtn.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    timeEntry = timeText.getText().toString();

                    entryEntered = entryText.getText().toString();

                    dl = new DiaryLogs(1, timeEntry, entryEntered);

                    entryLogs.add(dl);

3 个答案:

答案 0 :(得分:2)

在班级DiaryLogs.java中,您将字符串timeEntry和entryEntered声明为static

static String timeEntry;
static String entryEntered;

删除静态修改器,你就没事了。静态对象对于该类的任何实例具有相同的值(即使没有实例也可以访问),因此如果在另一个对象中设置该值,则每个实例都将使用该值。

答案 1 :(得分:0)

也许你应该删除第64行

entryLogs = new ArrayList<DiaryLogs>();

并初始化第22行的ArrayList

ArrayList<DiaryLogs> entryLogs;

也许有帮助:)

答案 2 :(得分:0)

把这两行

timeText =(EditText)getView()。findViewById(R.id.dateTimeEText);

        entryText = (EditText) getView().findViewById(R.id.diaryEntryEText);
@Override中的

                public void onClick(查看v){ }

愿这会有所帮助。