2017-04-04 7 views
1
final FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter(Service.class, R.layout.browse_service_detail, ServiceHolder.class, mReference){    
     @Override 
     protected void populateViewHolder(ServiceHolder serviceHolder, Service service, int position) { 

      serviceHolder.setServiceName(service.getName()); 
      serviceHolder.setInfo("От " + service.getPrice1());       
      service.setQuantitySelected(service.getQuantityEnabled()); 

      if (Order.getInstance().getServices() != null) { 
       for (Service serviceFromSingleton : Order.getInstance().getServices()) { 
        if (serviceFromSingleton.getName() == serviceHolder.getServiceName().getText().toString()) { 
         serviceHolder.getServiceName().setSelected(true); 
         serviceHolder.getServiceName().setTextColor(getResources().getColor(R.color.yellow)); 
        } 
       } 
      } 
      //add item to array 
      servicesList.add(service); 


     } 
    } 
}; 

にオブジェクトを複製し、それが配列に見えリストオブジェクトを記録し、私はスクロールダウンし、バックアップ行くとき、それが配列に再び第1の要素を複製します。それを修正するには?アイテムを1回だけ追加する場合。Firebase recyclerAdapterは、ArrayListの

+0

2つの文字列を比較するには、 '=='ではなく 'equalsIgnoreCase()'を使用します。 – Piyush

+0

arrayListのオブジェクトを複製する理由を尋ねています –

答えて

1

私はRecyclerAdapterに何の問題もないと思います。リストは同じデータを複数回挿入するだけだと思います。 リストにデータを追加する前にリストが空であるかどうかをチェックし、空でない場合はデータを消去してから新しいデータを追加するのはなぜですか?

if(servicesList.isEmpty()) 
    servicesList.add(service); 

//else clear and add data 
else{ 
    servicesList.clear(); 
    servicesList.add(service); 
} 

データduplicacyを処理するには、スクロールの重複挿入を無視するSetを使用することができます。

servicesList.add(service); 
Set<Service> mSet= new HashSet<Service>(); 
mSet.addAll(servicesList); 
servicesList.clear(); 
servicesList.addAll(mSet); 

またはその他のSetArrayListより

少し不器用使用しますが、あなたのために動作します。

+0

arrayListに追加するデータベースからすべてのオブジェクトが必要です。私のコードはrecyclerViewの可視オブジェクトのみを追加し、スクロールしてスクロールして追加したオブジェクトそのオブジェクトを再び追加します。答えをありがとう、それは私を助けません。 –

+0

@НаурызАбдикадиров編集された答えを試してください – Ranjit

+1

ありがとう、それは動作します –

関連する問題