当 Android 中方向更改时,列表视图将被清除(使用 customAdapter、List<Class Object>)



在我的应用程序中,我实现了一个Listview与CustomAdapter。Customadapter是由List对象(即List<ClassObject>)创建的。加上List<ClassObject>是动态的。这个ListView元素有一个按钮字段,用于从List<ClassObject>中删除所选的ClassObject。

所有这些都在一个方向上工作得很好。但是当方向改变到另一个方向时,列表视图变得清晰,我通过代码检查,List<ClassObject>变得清晰,List<ClassObject>.size()返回零。

我对纵向和横向使用了不同的布局。

我尝试android:ConfigChanges="取向|屏幕大小"在manifest.xml,这是防止我的数据,但它持有一个纵向布局,即使改变为横向,它扰乱了我的布局。

我想知道如何防止我的数据与横向和纵向的单独布局相匹配。

应用程序应该工作API级别SDK 8到更高的15。

请告诉我onSaveInstanceState(Bundle outInstanceState)onRetainNonConfigurationInstance()的区别。

当我看onRetainNonConfigurationInstance()上的开发人员。android,他们说在API级别13中已经弃用了。那么我们应该用什么来代替呢?

我确实想用下面的代码以某种方式保存数据。

    protected void onSaveInstanceState(Bundle) {
    // save your data
 //lstRoughDetailsPL is an object of List<Rough>
    outState.putSerializable(""+R.id.lstSO,(Serializable) lstRoughDetailsPL);
    super.onSaveInstanceState(outState);
}
@SuppressWarnings("unchecked")
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    // read your previously saved data
        //lstRoughDetailsPL is an global object of List<Rough>
    lstRoughDetailsPL = (List<Rough>)savedInstanceState.getSerializable(""+R.id.lstSO);
    FillGrid();// used do fill the list view by looping around the List<Rough> and passing values as 4 string[] to a CustomAdapter which has 4 textview in each list entry.
}   

但是当电话来了或者从通知幻灯片打开另一个应用程序时,我的活动被粉碎了。说"不幸的是,MyRoughWorkOutApp已经停止"

我该怎么做?

我明白了。我把我的类改成了parcelable类,然后把ArrayList的对象传递给bundle。

现在,一切都很好很完美。如果有人需要帮助,请尽管说……

最新更新