2017-12-11 10 views
1

私は電話のBluetoothデバイスとペアを探して表示するプログラムを作成しています。ユーザには表示するためのアドレスが表示されています。 。彼がしていないときに問題が表示され、arrayList duplicatesにデータが追加されます。私はwhileループを使用して、Btモジュールがオンになった後にペアリングされたデバイスのみをチェックするので、onResume()でそのようなことをするのは良い方法ですか?notifyDataSetChanged()は既存のarrayListコンテンツを複製します

答えて

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(); 
     } 
    } 
0

checkBluetoothState()をonCreateメソッドの中に置くことはできませんか?そして結果に応じて、配列作成のものを呼び出しますか?

アプリケーションの開発方法によっては、onResumeを複数回呼び出すことができます。それを避けるために、次のことができます。

  • が共有好み/フラグを作成し、一度だけ、それを呼び出す(firstRun =真、それは一度実行したときにfalseにそれを更新し)、その後、アレイの作成と更新がそれに依存しますフラグ、

  • そのクラス内にパブリック変数を作成し、初めての場合にのみコードを実行します。最後に変数を変更します。

  • あなたのアクティビティの実装方法を変更して、onResumeを1回だけ実行します。

また、この答えをチェックして、あなたのアプリが二回onResume呼び出しているかを理解しようとすることができます: Why is my onResume being called twice?

関連する問題