1

私はrecyclerviewで検出されたビーコンを表示したいです。これまでは、範囲指定の更新が呼び出されると新しいアイテムを作成することは避けられましたが、距離の値を更新することはできません。アンドロイドビーコン - 表示距離の更新が

beaconManager.addRangeNotifier(new RangeNotifier() { 
      @Override 
      public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) { 
       final BeaconAdapter adapter = (BeaconAdapter) recyclerView.getAdapter(); 

       for(Beacon beacon : beacons) { 
        if(!beaconList.contains(beacon)) { 
         beaconList.add(beacon); 
        } 
       } 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         adapter.clear(); 
         adapter.addAll(beaconList); 
        } 
       }); 
      } 
     }); 

これは私のBeaconAdapterで私が持っているコード

public void clear(){ 
    this.beaconList = null; 
    notifyDataSetChanged(); 
} 

public void addAll(List<Beacon> beaconList){ 
    this.beaconList = beaconList; 
    notifyDataSetChanged(); 
} 

私は冗長なアイテムを取得しますが、まだ距離のアップデートを入手することができ、その他のいないよように、どのように適切にビーコンを表示すべきです値?

+0

良い質問。要素が変わったときにRecyclerViewの更新を強制する方法がわかりませんが、それがここでの中心的な質問です。他のタグを追加して、この主題に関する専門家を引き付けることができます。 – davidgyoung

答えて

0

あなたは、常に使用することができます。

yourAdapterName.notifyDataSetChanged(); 

これは、更新されたデータのリストを更新します。

+0

答えるためのおかげで、私はすでに私のBeaconAdapterでこれらを設定しています '明確ます。public void(){ this.beaconList = NULL; notifyDataSetChanged(); (リストビーコンリスト){ this.beaconList = beaconList; notifyDataSetChanged(); } ' 私は右のそれをやっていますか? – fandomfox

+0

は、私はあなたがnotifyDataSetChangedを呼び出している()を考えるだけで、あなたが全体のデータを削除したり、距離に関するアップデートを受信したとき、あなたが追加したときにデータを追加し、ないとき。それを確認したいかもしれません。 –

+0

私は参照してください、私はアダプタに距離を渡す場合、どのような私はそれを更新する必要がありますリスト内の特定の項目を知っている? – fandomfox

関連する問題