我有一个包含listview的应用。 listview内的每个视图都有自定义xml,并有按钮复选框和textview。我必须从sqlite数据库中获取复选框的先前保存设置并进行设置。如果用户更改了复选框或单选按钮,我必须将这些设置保存在数据库中。
尝试了几种不同的方法来执行此操作,并且大多数都会导致错误,并且在返回页面时不会显示正确的复选框设置。
最终有效的是下面显示的设计。我把任何数据库调用尽可能接近实际视图。但是看起来如果列表视图中有很多行,它会对数据库进行多次调用,并且可能会变慢。
我的设计是正确的还是有更好的方法
psudocode
onCreate
instantiate arraylist adapter and set adapter to view
end onCreate
arrayadapter class
getView(){
call databsase and get previous settings for checkboxes in this view and
set the checkboxes to show checked or not depending on database saved settings
onClicklistener or oncheckedchanged listener for getting checkbox positions if changed
call database and set method to store updated positions of checkbox, radiobutton or spinner
}
end arrayadapter
答案 0 :(得分:0)
您的方法是正确的,您的担忧是必要的。我可以建议您使用以下方法,但必须测试其性能:
onCreate
instantiate arraylist adapter and set adapter to view
end onCreate
arrayadapter class
getView(){
call databsase and get previous settings for checkboxes in this view and
set the checkboxes to show checked or not depending on database saved settings
----> Create two ArrayLists: ArrayList<Boolean> for CheckBoxes
----> and ArrayList<Integer> for RadioButtons.
----> Fill these lists using the values from the databse
onClicklistener or oncheckedchanged listener for getting checkbox positions if changed
call database and set method to store updated positions of checkbox, radiobutton or spinner
----> Here, update the lists, not the database.
----> Execute a AsyncTask to update the database whenever the lists change.
}
end arrayadapter
答案 1 :(得分:0)
另一个人认为你可以做的是从Activity.onStart()中的数据库加载数据并将其保存回Activity onPause()。所有其他时间使用ArrayList来跟踪UI中的更改。
在这种情况下,您将在Activity生命周期中很少进行这种繁重的数据库操作。