Прежде всего, моя база данных SQLite работает нормально, поскольку добавление, удаление и т. Д.Индекс массива из исключения исключений?
Я могу загрузить ArrayList в методе Oncreate просто отлично. Тем не менее,
Когда я попытался следующие:
добавить новый элемент в ArrayList,
Arraylist.clear();
LoadArrayList(); //reload the list
Adapter.notifyDataSetChanged();
он бросил в силу близко с "ArrayIndexOutOfBoundsException: длина = 6; индекс = 6"
Когда я попытался это:
Arraylist.clear();
Adapter.notifyDataSetChanged();
элемент управления ListView не обнаружился ничего (ТНА t, чего я ожидал), поэтому он выполняет свою работу.
Вывод:
Почему это дает мне силы близко, когда я пытался обновить список с этой:
Arraylist.clear();
LoadArrayList();
Adapter.notifyDataSetChanged();
???????
Кроме того, я проверил базу данных для нового элемента, чтобы узнать, сохранена ли она. Новый элемент был добавлен и сохранен правильно. Я не понимаю, почему мой метод LoadArrayList не может прочитать новый элемент ...
Может кто-нибудь помочь?
Есть ли другой способ обновить список с новыми изменениями?
Большое спасибо.
Edit: добавлен код
@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);
}
}
}
можете ли вы разместить свой код в loadarraylist? –
'LoadArrayList()' должен быть в нижнем регистре - проверьте правила кодирования. В стороне, похоже, вы пытаетесь получить доступ к элементу массива, которого нет. Если длина равна 6, у вас есть индексы 0..5. Дважды щелкните запись log-cat, и она приведет вас к линии, где она не работает. Скорее всего, из этого станет очевидным. – 323go
Код добавлен. Спасибо – IamAGoodPerson