2017-12-10 22 views
0

FirebaseUiを使用して1つのRecyclerViewを作成していますが、アプリケーションを起動しても何も表示されません。私は、たくさんのチュートリアルやビデオが、何も作品を見るかもしれないばかな質問ですが、私は、Android上で新しいです、ここで私が使用していますすべてのコードされていますjava.lang.String型のオブジェクトをタイプtiagov.rideabike1.Model.Fretesに変換できません。

をここでは、モデルクラスは、ここで

public class Fretes { 

    private String mColeta; 
    private String mEntrega; 
    private String mStatus; 


public Fretes() { 

    } 
    public Fretes(String mColetaLat, String mColetaLong, String mEntregaLat, String mEntregaLong, String mStatus) { 
     this.mColeta= mColetaLat; 
     this.mEntrega = mEntregaLat; 
     this.mStatus = mStatus; 
    } 

    public String getmColeta() { 
     return mColeta; 
    } 

    public void setmColeta(String mColetaLat) { 
     this.mColeta = mColeta; 
    } 

    public String getmEntrega() { 
     return mEntrega; 
    } 

    public void setmEntrega(String mEntrega) { 
     this.mEntrega = mEntrega; 
    } 


    public String getmStatus() { 
     return mStatus; 
    } 

    public void setmStatus(String mStatus) { 
     this.mStatus = mStatus; 
    } 
} 

されています私はマイルだものを見ることができないホルダークラス

public class FretesHolder extends RecyclerView.ViewHolder { 

    private final TextView text_coleta; 
    private final TextView text_entrega; 
    private final TextView text_status; 

    public FretesHolder(View itemView) { 
     super(itemView); 

     text_coleta = (TextView) itemView.findViewById(R.id.text_coleta); 
     text_entrega = (TextView) itemView.findViewById(R.id.text_entrega); 
     text_status = (TextView) itemView.findViewById(R.id.text_status); 

    } 

    public void setText_coleta(String coleta){ 
     setText_coleta(coleta); 
    } 

    public void setText_entrega(String entrega){ setText_entrega(entrega); } 

    public void setText_status(String status){ setText_status(status); } 
public class FretesHolder extends RecyclerView.ViewHolder { 

    private final TextView text_coleta; 
    private final TextView text_entrega; 
    private final TextView text_status; 

    public FretesHolder(View itemView) { 
     super(itemView); 

     text_coleta = (TextView) itemView.findViewById(R.id.text_coleta); 
     text_entrega = (TextView) itemView.findViewById(R.id.text_entrega); 
     text_status = (TextView) itemView.findViewById(R.id.text_status); 

    } 

    public void setText_coleta(String coleta){ 
     setText_coleta(coleta); 
    } 

    public void setText_entrega(String entrega){ setText_entrega(entrega); } 

    public void setText_status(String status){ setText_status(status); } 
} 

そして、ここでの主なクラス

public class RecyclerViewTest extends AppCompatActivity { 

    private FirebaseRecyclerAdapter<Fretes, FretesHolder> adapter; 
    private RecyclerView mRecyclerFretes; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_reclycler_view); 


     mRecyclerFretes = (RecyclerView) findViewById(R.id.recyclerTest); 
     mRecyclerFretes.setHasFixedSize(true); 

     setupAdapter(); 
    } 

    private void setupAdapter() { 

     Query query = FirebaseDatabase.getInstance() 
       .getReference() 
       .child("test"); 

     FirebaseRecyclerOptions<Fretes> options = 
       new FirebaseRecyclerOptions.Builder<Fretes>() 
         .setQuery(query, Fretes.class) 
         .build(); 

     adapter = new FirebaseRecyclerAdapter<Fretes, FretesHolder>(options) { 
      @Override 
      public FretesHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
       View view = LayoutInflater.from(parent.getContext()) 
         .inflate(R.layout.layout_fretes, parent, false); 

       return new FretesHolder(view); 
      } 

      @Override 
      protected void onBindViewHolder(FretesHolder holder, int position, Fretes model) { 
       holder.setText_status(model.getmStatus()); 
       holder.setText_entrega(model.getmEntrega()); 
       holder.setText_coleta(model.getmColeta()); 
      } 

     }; 
     mRecyclerFretes.setAdapter(adapter); 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 
     adapter.startListening(); 
    } 

    @Override 
    public void onStop(){ 
     super.onStop(); 
     adapter.stopListening(); 

    } 
} 

それが間違っている場合、私はいくつかの助けに感謝します。 THX

EDIT 私はインクルードはのonCreate

mRecyclerFretes.setLayoutManager(new LinearLayoutManager(this)); 

に欠けていた、この行を追加します。そして今、私はこのエラー:(

com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type tiagov.rideabike1.Model.Fretes 
at com.google.android.gms.internal.zzear.zzb(Unknown Source:842) 
at com.google.android.gms.internal.zzear.zza(Unknown Source:0) 
at com.google.firebase.database.DataSnapshot.getValue(Unknown Source:10) 
at com.firebase.ui.database.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:23) 
at com.firebase.ui.database.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:14) 
at com.firebase.ui.common.BaseCachingSnapshotParser.parseSnapshot(BaseCachingSnapshotParser.java:32) 
at com.firebase.ui.common.BaseObservableSnapshotArray.get(BaseObservableSnapshotArray.java:45) 
at com.firebase.ui.database.FirebaseRecyclerAdapter.getItem(FirebaseRecyclerAdapter.java:103) 
at com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:118) 
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6482) 
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6515) 
at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5458) 
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5724) 
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5563) 
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5559) 
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2229) 
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1556) 
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1516) 
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:608) 
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3693) 
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3410) 
at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1710) 
at android.support.v7.widget.RecyclerView$1.run(RecyclerView.java:346) 
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:966) 
at android.view.Choreographer.doCallbacks(Choreographer.java:778) 
at android.view.Choreographer.doFrame(Choreographer.java:710) 
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952) 
at android.os.Handler.handleCallback(Handler.java:789) 
at android.os.Handler.dispatchMessage(Handler.java:98) 
at android.os.Looper.loop(Looper.java:164) 
at android.app.ActivityThread.main(ActivityThread.java:6567) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

マイデータベース firebase

+0

希望するソリューションを実現するために何を試みましたか? –

+0

firebaseからデータを取得し、ricycleviewに入れよう –

+0

あなたのデータベースを表示 –

答えて

0

アタッチましたFirebaseUIアダプタをロケーション/クエリに追加するには、それぞれ子ノードとtその子ノードのプロパティをクラス内のプロパティにマップします。

あなたの場所にある子ノードは、mColeta,mEntrega、およびmStatusです。それらのそれぞれについて、FirebaseはFretesオブジェクトを作成し、プロパティをマップしようとします。各子ノードにはtrueという単一の値しかないため、マッピングは失敗します。この作品を作るために

一つの方法は、子ノードのためにあなたのJSONにレベルを追加することです。このような構成で

test 
    -Lsdfiuhsaiu 
    mColeta: "teste" 
    mEntrega: "teste" 
    mStatus: "teste" 

は、ノードの追加レベルがあり、あなたのアダプタのプロパティを見つけることができます。

+0

thx man、その仕事:) –

関連する問題