0

Ich versuche, die Daten von meinem Firebase anzuzeigen, aber es wird nicht in meinem RecyclerView angezeigt. Ich weiß nicht, was falsch war. Ich versuche auch, einige Tutorials oder die gleiche Frage von Stackoverflow zu finden, aber ich verstehe es nicht. Zeige immer noch nicht die Daten von Firebase.Daten von Firebase werden nicht auf meinem RecyclerView mit CardView angezeigt

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); 
     } 
    } 
} 

Geschichte (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 ist eine sehr ineffiziente Methode zum Debuggen Ihrer App. Sie müssen Ihren Code mit einem Debugger durchgehen, um zu sehen, was * tut * und was * nicht * auslöst. Auf diese Weise können Sie den Platz im Code finden, der etwas tut, was Sie nicht erwarten. Eine einfache erste Frage: Wird Ihre 'onDataChange()' Methode ausgelöst? –

+0

Außerdem: Sie schlucken jeden Fehler, der in 'onCancelled' passieren könnte. Auf dieser Seite erfahren Sie, wie Sie [Fehler beim Lesen von Daten unter Android erkennen] (http://stackoverflow.com/documentation/firebase/5548/how-do-i-listen-for-errors-when-accessing-the-database#) t = 201609192212047137718). –

+0

Warum verwenden Sie keinen 'FirebaseRecyclerAdapter'? –

Antwort

0

Sie müssen das Layout festlegen, bevor Adapter wie diese Einstellung:

recycler = (RecyclerView) findViewById(R.id.recyclerview); 
recycler.setLayoutManager(new LinearLayoutManager(this)); 
historyList = fillData(); 
Verwandte Themen