2016-09-20 13 views
0

Firebaseからデータを表示しようとしていますが、私のrecyclerViewに表示されません。私は何が間違っていたのか分からない。 私はまた、いくつかのチュートリアルやstackoverflowから同じ質問を見つけることを試みていますが、私はそれを取得しません。それでもFirebaseのデータは表示されません。FirebaseからのデータがCardViewでRecyclerViewに表示されない

HistoryActivity.class

public class HistoryActivity extends AppCompatActivity { 

    String name, route; 
    int earnings, time, distance, totalPassenger, tripCount; 
    private Firebase ref; 
    private RecyclerView recycler; 
    private RecyclerViewAdapter adapter; 
    List<History> historyList; 
    History history; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_history); 
     Firebase.setAndroidContext(this); 

     recycler = (RecyclerView) findViewById(R.id.recyclerview); 

     historyList = fillData(); 

     recycler.setLayoutManager(new LinearLayoutManager(this)); 
    } 

    public List<History> fillData() { 
     historyList = new ArrayList<>(); 

     ref = new Firebase(Config.FIREBASE_URL_HISTORY_DRIVER); 
     ref.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
        Toast.makeText(HistoryActivity.this, snapshot.getValue()+"", Toast.LENGTH_SHORT).show(); 

        name = snapshot.child("driverName").getValue().toString().trim(); 
        route = snapshot.child("destination").getValue().toString().trim(); 
        earnings = Integer.valueOf(snapshot.child("earnings").getValue().toString().trim()); 
        time = Integer.valueOf(snapshot.child("time").getValue().toString().trim()); 
        distance = Integer.valueOf(snapshot.child("distanceTravelled").getValue().toString().trim()); 
        totalPassenger = Integer.valueOf(snapshot.child("totalPassenger").getValue().toString().trim()); 
        tripCount = Integer.valueOf(snapshot.child("tripCount").getValue().toString().trim()); 
        historyList.add(new History(name, route, earnings, time, distance, totalPassenger, tripCount)); 
       } 
       Toast.makeText(HistoryActivity.this, historyList.size()+":size", Toast.LENGTH_LONG).show(); 
       adapter = new RecyclerViewAdapter(historyList); 
       recycler.setAdapter(adapter); 
      } 

      @Override 
      public void onCancelled(FirebaseError firebaseError) { 
      } 
     }); 
     return historyList; 
    } 
} 

RecyclerViewAdapter

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.HistoryViewHolder> { 

    List<History> historyList; 
    Context context; 

    public RecyclerViewAdapter(List<History> historyList) { 
     this.historyList = historyList; 
    } 

    @Override 
    public HistoryViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     //inflate the layout, initialize the View Holder 
     View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_layout, parent, false); 
     HistoryViewHolder holder = new HistoryViewHolder(view); 
     return holder; 
    } 

    @Override 
    public void onBindViewHolder(RecyclerViewAdapter.HistoryViewHolder holder, int position) { 
     holder.driversName.setText(historyList.get(position).getDriversName()); 
     holder.route.setText(historyList.get(position).getRoute()); 
     holder.totalEarnings.setText(historyList.get(position).getEarnings()); 
     holder.time.setText(historyList.get(position).getTime()); 
     holder.distance.setText(historyList.get(position).getDistance()); 
     holder.totalPassenger.setText(historyList.get(position).getTotalPassenger()); 
     holder.tripCount.setText(historyList.get(position).getTripCount()); 
     animate(holder); 
    } 

    @Override 
    public int getItemCount() { 
     return historyList.size(); 
    } 

    @Override 
    public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
     super.onAttachedToRecyclerView(recyclerView); 
    } 

    public void animate(RecyclerView.ViewHolder viewHolder) { 
     final Animation animAnticipateOvershoot = AnimationUtils.loadAnimation(context, R.anim.bounce_interpolator); 
     viewHolder.itemView.setAnimation(animAnticipateOvershoot); 
    } 

    public static class HistoryViewHolder extends RecyclerView.ViewHolder { 
     CardView cardView; 
     EditText driversName; 
     EditText route; 
     EditText totalEarnings; 
     EditText time; 
     EditText distance; 
     EditText totalPassenger; 
     EditText tripCount; 

     public HistoryViewHolder(View itemView) { 
      super(itemView); 
      cardView = (CardView) itemView.findViewById(R.id.cardView); 
      driversName = (EditText) itemView.findViewById(R.id.edtDriversName); 
      route = (EditText) itemView.findViewById(R.id.edtRoute); 
      totalEarnings = (EditText) itemView.findViewById(R.id.edtEarning); 
      time = (EditText) itemView.findViewById(R.id.edtTime); 
      distance = (EditText) itemView.findViewById(R.id.edtDistance); 
      totalPassenger = (EditText) itemView.findViewById(R.id.edtTotalPass); 
      tripCount = (EditText) itemView.findViewById(R.id.edtTripCount); 
     } 
    } 
} 

履歴(POJO)あなたはこのようにアダプタを設定する前に、レイアウトを設定する必要が

public class History { 

    private String username; 
    private String driversName; 
    private String route; 
    private int earnings; 
    private int time; 
    private int distance; 
    private int totalPassenger; 
    private int tripCount; 

    public History(String driversName, String route, int earnings, int time, int distance, int totalPassenger, int tripCount) { 
     this.driversName = driversName; 
     this.route = route; 
     this.earnings = earnings; 
     this.time = time; 
     this.distance = distance; 
     this.totalPassenger = totalPassenger; 
     this.tripCount = tripCount; 
    } 
+0

StackOverflowは、アプリをデバッグするのに非常に非効率的な方法です。デバッガを使用してコードが実行され、何が*実行され、何が*トリガされないかを確認する必要があります。そうすれば、あなたが期待していないことをしているコード内の場所を見つけることができます。簡単な最初の質問:あなたの 'onDataChange()'メソッドはトリガされますか? –

+0

また、あなたは 'onCancelled'で起こり得るエラーを飲み込んでいます。このページの[Androidでデータを読み込む際のエラーを検出する]方法については、こちらを参照してください(http://stackoverflow.com/documentation/firebase/5548/how-do-i-listen-for-errors-when-accessing-the-database# t = 201609192212047137718)。 –

+0

なぜFirebaseRecyclerAdapterを使用しないのですか? –

答えて

0

recycler = (RecyclerView) findViewById(R.id.recyclerview); 
recycler.setLayoutManager(new LinearLayoutManager(this)); 
historyList = fillData(); 
関連する問題