【问题标题】:Deleting a record from SQLite using spinner and updating spinner values in Android not working properly使用微调器从 SQLite 中删除记录并在 Android 中更新微调器值无法正常工作
【发布时间】:2018-01-12 21:04:45
【问题描述】:

我有一个微调器,它有 3 个来自 SQLite 数据库的值,一个是虚拟的,一个是真实的

我选择一项并删除一项

当我尝试删除下一个微调器时,它不会更新其值。即使我重新加载活动,它的价值也在那里。

将数据加载到微调器的方法,每当我删除项目时都会调用它:

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;
}

【问题讨论】:

  • 检查您是否从数据库表中成功删除了您的项目!
  • 你的方法可以吗:getAllData()

标签: android sqlite spinner


【解决方案1】:

删除后代替adapter.notifyDataSetChanged();您可以使用以下代码。

adapter.remove(position);

这里的位置将与数据库中的item_id匹配。

这将从数据库中检查 id,并根据微调列表的索引位置删除微调列表项的位置。

所以先从微调器项中删除,然后从数据库中删除,反之亦然

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 2018-08-05
    相关资源
    最近更新 更多