当设备模式从横向模式更改为纵向模式或从纵向模式更改为横向模式时,已删除的arraylist项目将显示在列表视图中

时间:2014-11-11 05:56:59

标签: android arraylist

朋友你好,               因为我从列表视图中删除arrylist项目而不是arrylist项目被删除但是当我将设备模式从(横向模式)更改为纵向模式或(纵向模式到横向模式)时,问题会发生在列表视图中可见的已删除项目上请帮我解决这些问题。谢谢提前

7 个答案:

答案 0 :(得分:2)

非常感谢亲爱的朋友们为您提供的宝贵意见.... 我只是更改了清单文件,它对我来说很好。再次感谢朋友.Below是我在清单文件中添加的活动

android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout|uiMode

或者简单地使用这些

 android:configChanges="orientation|screenSize|screenLayout"

答案 1 :(得分:1)

每次适配器的基础数据发生更改时,都需要在适配器上调用notifyDataSetChanged()方法。这会导致ListView刷新""。

enter image description here

更新:

  我使用它但我的主要问题是当我使用这两种模式时   设备中的已删除项目也显示在列表视图中

当方向发生变化时,您似乎正在重新加载相同的旧数据。这些变化不会持续存在。您需要一种机制,以便对基础数据进行更改。

答案 2 :(得分:1)

对于ArrayAdapter,如果在适配器上使用add(),insert(),remove()和clear(),notifyDataSetChanged将起作用。

arrayList.remove(position);
myAdapter.notifyDataSetChanged()

答案 3 :(得分:1)

当你更新listview时你在适配器对象上使用这个方法

Adapter.notifyDataSetChanged()

答案 4 :(得分:1)

当活动进入横向时,肖像模式活动被破坏&它又创造了。我认为在您的活动的onCreate()方法中,它会被您之前的值重新初始化。请检查一下。

如果我是对的,你需要在活动被销毁之前存储当前数组的状态&在onCreate()方法中恢复它。

这是示例代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   if (savedInstanceState != null) {
      // get values from Bundle & set it to adapter
   }

@Override
protected void onSaveInstanceState (Bundle outState) {
    super.onSaveInstanceState(outState);
    // save your state to Bundle
}

答案 5 :(得分:1)

@Ravindra Kushwaha使用了以下步骤,

  1. 新的arraylist 存储在本地数据库共享首选项中。
  2. 如果删除元素,请立即更新本地数据库。
  3. 始终使用本地数据库中的arraylist。

答案 6 :(得分:1)

在方向更改时,您的arraylist正在重新初始化或再次从其来源获取所有数据。

因此,当您从arraylist中删除数据时,请将其从arraylist的主要来源中删除。

因此,arraylist不会获取有关方向的删除数据。

希望这会有所帮助。快乐的编码:)

P.S。如果有帮助,请将此答案标记为正确。