做了调试。我可以在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);
答案 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){ }
愿这会有所帮助。