很抱歉写出似乎是一个常见问题的信息,但是我已经完成了一项任务五个小时,我只是放弃了.
我正在制作一个小型android应用程序,它现在应该做的就是保留一个小型sqlite数据库并能够在其上编写/编辑注释. sql一切正常,我的问题是ListView.不管我做什么,当我添加新笔记时它都拒绝更新.查看新笔记的唯一方法是当我进入另一种编辑模式并退出时.
这是源代码的相关部分:
public class MainActivity extends Activity {
ArrayAdapter<NoteItem> mAdapter;
public static NoteDataBase ndb;
ListView listView;
ArrayList a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ndb = new NoteDataBase(this);
a = ndb.getAllNotes();
//LISTVIEW DO NOT TOUCH
/***********/ mAdapter = new ArrayAdapter<NoteItem>(this,
/***********/ android.R.layout.simple_list_item_1, a);
/***********/ listView = (ListView) findViewById(R.id.listView1);
/***********/ listView.setAdapter(mAdapter);
//*****************
}
//New Note button
public void newNoteAction(View view){
ndb.addNote(new NoteItem("Title", "Contents"));
a = ndb.getAllNotes();
mAdapter = new ArrayAdapter<NoteItem>
(this, android.R.layout.simple_list_item_1, a);
mAdapter.notifyDataSetChanged();
System.out.println(ndb.getAllNotes().size());
}
最后的打印只是看它是否在实际创建新笔记.
希望我能提供足够的信息,告诉我您是否还有其他需要.我已经尝试了几乎所有我已经读过的内容,但是在完成一项任务将近五个小时之后,有一点我会发疯的:)
谢谢,
棚架
解决方法:
public void newNoteAction(View view){
ndb.addNote(new NoteItem("Title", "Contents"));
// don't do this
// you are creating a new adapter and not binding it back to listview
// a = ndb.getAllNotes();
// mAdapter = new ArrayAdapter<NoteItem>(this, android.R.layout.simple_list_item_1, a);
mAdapter.add(new NoteItem("Title", "Contents"));
mAdapter.notifyDataSetChanged();
System.out.println(ndb.getAllNotes().size());
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。