我有一个微调器,它有3个值来自SQLite数据库,一个虚拟和2个真实
我选择一个项目,然后删除一个项目
当我试图删除下一个时,微调器没有更新它的值。即使我重新加载活动,它的值也在那里。
将数据加载到微调器的方法,每当我删除项目时我都会调用它:
private void LoadSpinnerData(ArrayList<String> list)
{
seasonslist.add(0,"Please Select");
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
MySpin.setAdapter(dataAdapter);
dataAdapter.notifyDataSetChanged();
}
这是我的删除方法
mHelper.deleteItem(Id);
Selected_id=null;
List = mHelper.getAllData();
LoadSpinnerData(List);
在这里我的微调项目选择
MySpin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
if(position>0)
{
Selected_id = (int) (long) id;
}
}
});
我的删除功能是
public boolean deleteItem(int id)
{
SQLiteDatabase db = this.getWritableDatabase();
return db.delete("mytable","item_id"+"="+Integer.toString(id),null)>0;
}
删除后而不是adapter.notifyDataSetChanged();您可以使用以下代码。
adapter.remove(position);
这里的位置将是数据库中的item_id匹配。
这将检查数据库中的id,并将根据微调器列表的索引位置删除微调器列表项的位置。
因此,首先从微调器项目中删除,然后从数据库中删除,反之亦然