2016-10-09 14 views
2

アダプタでaddAll()メソッドの代わりに使用できるのは、レルムバージョン2.0.1を使用しています。そのメソッドは廃止予定です。すべてのデータを取得しようとしていますAPIから、私のデータベースに保存し、私のアダプタに渡し、私は次のように使用しています:RealMResultsではaddAll()メソッドがサポートされていません

public void getData(int page) { 
    if (GlobalModel.existeConexao()) { 

     Call<PedidosResponse> call = ((NavigationMain) getActivity()).apiService.getPedidos(GlobalModel.getToken(), GlobalModel.geEmpresaId(), page); 
     call.enqueue(new Callback<PedidosResponse>() { 
      @Override 
      public void onResponse(Call<PedidosResponse> call, Response<PedidosResponse> response) { 
       if (response.isSuccessful()) { 
        for (int i = 0; i < response.body().getPedidos().size(); i++) { 
         Pedidos mPedido = response.body().getPedidos().get(i); 
         int myInt = (mPedido.isProjecao()) ? 1 : 0; 
         if (!mRepositorio.checkIfExists(mPedido.getId())) { 
          mRepositorio.addPedido(mPedido.getId(), mPedido.getCliente_id(), mPedido.getData_hora(), mPedido.getData_pedido_cliente(), mPedido.getPrevisao_entrega(), mPedido.getFrete_tipo(), myInt, mPedido.getObservacao(), mPedido.getAliquota_projecao(), mPedido.getStatus(), mPedido.getPedido_cliente()); 

         } 
        } 
        arraypedidos = mRepositorio.findAllPedidos(); 

        if (mPedidosAdapter == null) { 
         mPedidosAdapter = new PedidosAdapter(getActivity(), arraypedidos); 
         listpedidos.setAdapter(mPedidosAdapter); 
        } else { 
         mPedidosAdapter.setData(arraypedidos); 
        } 


       } 
      } 

      @Override 
      public void onFailure(Call<PedidosResponse> call, Throwable t) { 
       if (t.getMessage() != null) { 
        Log.v("pedidos", t.getMessage()); 
       } 

      } 
     }); 

    } else { 
     Toast.makeText(getActivity(), "Verifique sua conexão", Toast.LENGTH_SHORT).show(); 
    } 

} 

しかし、私は、私はこのメッセージを取得するアプリを実行すると:

java.lang.UnsupportedOperationException: This method is not supported by RealmResults. 
+0

は 'RealmResult'または' RealmList'の 'pediosItens'オブジェクトですか? –

+0

@MohammedAtif pedidosItensはRealmResultsです – AND4011002849

+0

Realmで操作を実行しているときにRealmResultまたはRealmListが優先されるが、他の操作ではListを使用するのが好ましいので、リスト pedidosItens = new ArrayList <>() ' –

答えて

3

ためですRealmResultsは、クエリで定義された条件を満たすポインタのセットです。あなたはそれを操作することはできませんし、アダプタのすべての要素を表示するつもりならば、

実際にはRealm was explicitly designed to simplify the workflow of "downloading data on a background thread and saving the data in a database", and "showing the data downloaded on a background thread automatically on the UI thread"です。

これはRealmChangeListenerが対象です。

   arraypedidos = mRepositorio.findAllPedidos(); 

       if (mPedidosAdapter == null) { 
        mPedidosAdapter = new PedidosAdapter(getActivity(), arraypedidos); 
        listpedidos.setAdapter(mPedidosAdapter); 
       } else { 
        mPedidosAdapter.setData(arraypedidos); 
       } 

そして、これに置き換えることができます:このため

public class SomeActivity extends AppCompatActivity { 
    PedidosAdapter pedidosAdapter; 

    public void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
     setContentView(R.layout.some_view); 
     pedidosAdapter = new PedidosAdapter(context, mRepositorio.findAllPedidos()); 
     // set adapter, ... 
    } 
} 

そして

public class PedidosAdapter extends RealmRecyclerViewAdapter<Pedidos, PedidosViewHolder> { 
    public PedidosAdapter(Context context, RealmResults<Pedidos> results) { 
     super(context, results, true); 
    } 

    // onBindViewHolder 

    // onCreateViewHolder 
} 

、使用

単純にこのコードのすべてが不要であり、置きますRealmRecyclerViewAdapterRealmChangeListenerを手動で処理します。

関連する問題