notifyDataSetChanged()复制现有的arrayList内容

时间:2017-12-11 16:23:17

标签: java android arraylist bluetooth

我正在制作一个程序,该程序将寻找与手机蓝牙设备配对,显示它们和他们的地址以供用户查看,并且当用户已经在手机中打开Bt时它正常工作。当他没有出现问题时,会导致数据添加到arrayList重复项中。我使用了一个while循环,所以它只在Bt模块打开后检查配对设备,这是在onResume()上做这样的事情的好方法吗?

2 个答案:

答案 0 :(得分:1)

快速解决方法是检查数据源列表中是否已存在String。像这样的东西

 for (BluetoothDevice device: pairedDevice) {
     String name = device.getName();
     String address = device.getAddress();
     String toBeAdded = address + " " + name;
     if (!QueryDevices_final.contains(toBeAdded) {
             QueryDevices_final.add(toBeAdded);
             arrayAdapter.notifyDataSetChanged();
         }
     }

答案 1 :(得分:0)

你不能把你的checkBluetoothState()放在onCreate方法中吗?并根据结果调用数组创建的东西?

根据您的应用程序的开发方式,可以多次调用onResume。为避免这种情况,您可以:

  • 创建共享首选项/标志并仅调用一次(firstRun = true并在运行一次时将其更新为false)然后使数组创建和更新依赖于该标志,

  • 在该类中创建一个公共变量,并且只在第一次运行时才运行代码。最后更改变量。

  • 更改活动的实施方式,以便onResume只运行一次。

您还可以查看此答案并尝试了解您的应用在哪里调用onResume两次: Why is my onResume being called twice?