Android中的方向更改时,列表视图会被清除(使用customAdapter,List )

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中的方向更改时,列表视图会被清除(使用customAdapter,List )相关的知识,希望对你有一定的参考价值。

在我的应用程序中,我使用CustomAdapter实现了Listview。 Customadapter由List对象构成,即List<ClassObject>。而这个List<ClassObject>的补充是动态的。此ListView元素有一个按钮字段,用于从List<ClassObject>中删除所选的ClassObject。

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

我正在使用不同的布局来纵向和横向。

我在manifest.xml中尝试了android:ConfigChanges =“Orientation | Screensize”,它阻止了我的数据,但即使更改为横向并且它正在弄乱我的布局,它仍然保持一个纵向布局。

我想知道如何通过匹配横向和纵向的单独布局来阻止我的数据。

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

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

当我在developer.android上查看ReturnNonConfigurationInstance()时,他们说它在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。

现在,一切都很好,完美。如果有人需要帮助,请随时说..

以上是关于Android中的方向更改时,列表视图会被清除(使用customAdapter,List )的主要内容,如果未能解决你的问题,请参考以下文章

android在单击按钮时更改列表视图内的图像视图

视图布局不会在android中的方向更改时刷新

在方向更改时恢复列表视图中的项目和滚动位置

在方向更改时保留列表片段中的列表

方向/配置更改后如何维护 ListView 片段状态?

快速方向视图更改