朋友你好, 因为我从列表视图中删除arrylist项目而不是arrylist项目被删除但是当我将设备模式从(横向模式)更改为纵向模式或(纵向模式到横向模式)时,问题会发生在列表视图中可见的已删除项目上请帮我解决这些问题。谢谢提前
答案 0 :(得分:2)
非常感谢亲爱的朋友们为您提供的宝贵意见.... 我只是更改了清单文件,它对我来说很好。再次感谢朋友.Below是我在清单文件中添加的活动
android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout|uiMode
或者简单地使用这些
android:configChanges="orientation|screenSize|screenLayout"
答案 1 :(得分:1)
每次适配器的基础数据发生更改时,都需要在适配器上调用notifyDataSetChanged()
方法。这会导致ListView
刷新""。
更新:
我使用它但我的主要问题是当我使用这两种模式时 设备中的已删除项目也显示在列表视图中
当方向发生变化时,您似乎正在重新加载相同的旧数据。这些变化不会持续存在。您需要一种机制,以便对基础数据进行更改。
答案 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使用了以下步骤,
答案 6 :(得分:1)
在方向更改时,您的arraylist正在重新初始化或再次从其来源获取所有数据。
因此,当您从arraylist中删除数据时,请将其从arraylist的主要来源中删除。
因此,arraylist不会获取有关方向的删除数据。
希望这会有所帮助。快乐的编码:)
P.S。如果有帮助,请将此答案标记为正确。