首先,我的SQLite数据库在添加,删除等方面工作得很好。
我可以在Oncreate方法中加载ArrayList就好了。然而,
当我尝试以下操作时:
将新项添加到ArrayList,
Arraylist.clear();
LoadArrayList(); //reload the list
Adapter.notifyDataSetChanged();
它使用" ArrayIndexOutOfBoundsException:length = 6;指数= 6"
当我尝试这个时:
Arraylist.clear();
Adapter.notifyDataSetChanged();
ListView没有显示(这是我所期待的),所以它完成了它的工作。
结论:
当我尝试使用重新加载列表时,为什么它会让我关闭力量:
Arraylist.clear();
LoadArrayList();
Adapter.notifyDataSetChanged();
???????
此外,我确实检查了数据库中的新项目以查看它是否已保存。新项目已添加并正确保存。我不明白为什么我的LoadArrayList方法无法读取新项...
有人可以帮忙吗?
还有其他方法可以使用新更改刷新列表吗?
提前多多感谢。
编辑:添加代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
…….
…..
try {
Open_SQLITE_DATABASE();
LoadArrayList(); //Load the list at start and IT WORKS ….. }
catch (Exception e) { }
…..
…..
listView = (ListView)findViewById(R.id.ListView);
listView.setAdapter(Arraylist);
listView. setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
.....
}
});
….
….
@Override
public boolean onOptionsItemSelected (MenuItem item)
{
switch (item.getItemId())
{
case R.id.loadbutton:
Arraylist.clear();
LoadArrayList(); //NOT WORKING ??????
Adapter.notifyDataSetChanged();
return true;
}
...
...
Public void LoadArrayList(){
Cursor cursor = SQLITE_DATABASE.getWritableData().query(SQLite_Database.getDatabaseTable(), null, null, null, null, null, null, null);
if(cursor != null)
{
while(cursor.moveToNext())
{
String POSITION = cursor.getString(cursor.getColumnIndex(SQLite_Database.Position));
Arraylist.add(POSITION);
}
}
}
答案 0 :(得分:0)
您应该尝试访问的最大索引是5.索引编号从0开始。
length=6; index=6
表示您正在尝试访问不存在的索引6。检查LoadArrayList()逻辑。
答案 1 :(得分:0)
我终于找到了解决方案:
@Override
public boolean onOptionsItemSelected (MenuItem item)
{
switch (item.getItemId())
{
case R.id.loadbutton:
Arraylist.clear();
LoadArrayList();
Adapter.notifyDataSetChanged();
listView.setAdapter(Arraylist); //This is needed to prevent the force close
return true;
}
基本上,listView.setAdapter(Arraylist)丢失了。我希望它可以帮助别人。