如何将ListView镜像到数据库?

时间:2014-01-13 06:47:31

标签: android sql listview android-listview

我有一个包含存储int和string的表的数据库。整数值是主键。我创建了一个函数来从数据库中获取字符串并将它们存储在一个列表中,然后使用ArrayAdapter将其应用于ListView。如下所示。

List<String> list = db.getAllStringNotes();

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_activated_1, list);
listview.setAdapter(adapter);
listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

问题是从此列表视图中删除。由于主键不与字符串一起出现,我使用从列表视图中选择的项目的位置进行删除。但是如果我从列表中间删除一个条目,这显然会弄乱一些事情。

所以想知道我是否可以将主键,即整数值添加到此列表视图以及字符串但不显示整数值?

3 个答案:

答案 0 :(得分:2)

简单的事就是创建两个List,

1. String - Stored String notes
2. Integer - Stored all Primary Keys

因此,只要用户点击Listview用户获取其位置,并根据该位置获取第二个列表中的主键值,然后执行删除查询。

答案 1 :(得分:0)

有很多方法可以做到这一点:但是因为你已经在使用ArrayList所以我建议你在从数据库中提取时再创建一个arraylist:

因此在使用位置删除时: 使用 PrimaryKeyArrayList 中的主键 并从ArrayList;

中删除值

有了这个,你就能得到你所需要的东西;

答案 2 :(得分:0)

请按照以下步骤操作:

  1. 创建具有db值
  2. bean.java 文件
  3. 创建 CustomAdapter.java 以合并项目并处理删除操作
  4. 在适配器中创建删除方法,并将选定的bean对象传递给从DB和ArrayList中删除。
  5. 删除后调用 notifyDatasetChanged 方法以反映列表中的更改
  6. 编辑:

    Bean文件:

    public class MyDB_Bean{
       public int id;
       public String data;
       MyDB_Bean(int id,String data){
         this.id=id;
         this.data=data;
       }
    }
    

    从活动中调用

    ArrayList<MyDB_Bean> list = db.getAllStringNotes();
    MyArrayAdapter adapter = new MyArrayAdapter<String>(this,list);
    listview.setAdapter(adapter);
    listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    

    对于 CustomAdapter ,请按照以下教程

    进行操作

    http://www.ezzylearning.com/tutorial.aspx?tid=1763429

    Custom Adapter for List View

    http://www.vogella.com/tutorials/AndroidListView/article.html

    http://learnandroideasily.blogspot.in/2013/06/listview-with-custom-adapter.html