2

我有一个具有列表视图的应用程序。列表视图中的每个视图都有自定义 xml,并有按钮复选框和文本视图。我必须从 sqlite 数据库中获取以前保存的复选框设置并进行设置。如果用户更改复选框或单选按钮,我必须将这些设置保存在数据库中。

尝试了几种不同的方法来做到这一点,大多数都导致错误,并且在返回页面时不会显示复选框的正确设置。

最终奏效的是下图所示的设计。我将任何数据库调用尽可能靠近实际视图。但是,看起来如果列表视图中有很多行,它会对数据库进行多次调用,并且可能会变慢。

我的设计是正确的还是有更好的方法

伪代码

 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
4

2 回答 2

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
于 2013-07-29T05:49:44.947 回答
0

您可以做的另一个想法是在 Activity.onStart() 中从数据库加载数据并将其保存回 Activity onPause() 中。所有其他时间都使用 ArrayList 来跟踪 UI 中的变化。

在这种情况下,您将在 Activity 生命周期中很少有这种繁重的数据库操作。

于 2013-07-29T06:31:26.767 回答