【问题标题】:Firebase RecyclerView not displaying AnythingFirebase RecyclerView 不显示任何内容
【发布时间】:2018-07-24 22:07:57
【问题描述】:

我对另一个数据库有相同的代码,它工作得很好,我不知道为什么它不能在这里工作, onCreateViewHolder 甚至没有被调用。

(显然 Stacks Overflow 想让我添加更多细节来弥补过多的代码,所以这里有一些无用的 Text 、 Text 、 Text 、 TEXT )。

public class Course extends AppCompatActivity {

private RecyclerView mLocationView;
private DatabaseReference mLocation;

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


    mLocation = FirebaseDatabase.getInstance().getReference("FINISHEDCOURSES");
    mLocation.keepSynced(true);

    mLocationView = (RecyclerView) findViewById(R.id.my_recycler_view);
    mLocationView.setHasFixedSize(true);
    mLocationView.setLayoutManager(new LinearLayoutManager(this));

}

@Override
protected void onStart() {
    super.onStart();

    FirebaseRecyclerOptions<Courses> options = new FirebaseRecyclerOptions.Builder<Courses>().setQuery(mLocation, Courses.class).build();
    FirebaseRecyclerAdapter<Courses, CourseViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Courses, CourseViewHolder>
            (options) {
        @Override
        protected void onBindViewHolder(@NonNull CourseViewHolder holder, int position, @NonNull Courses model) {
            holder.setText(model.getDate(), model.getDistance(), model.getDriver(), model.getPrice());
        }

        @NonNull
        @Override
        public CourseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.courses_rows, parent, false);
            return new CourseViewHolder(view);
        }
    };



    mLocationView.setAdapter(firebaseRecyclerAdapter);
    firebaseRecyclerAdapter.startListening();



}



public static class CourseViewHolder extends RecyclerView.ViewHolder{

    View mView;
    public CourseViewHolder(View itemView){
        super(itemView);
        mView = itemView;
    }

    public void setText(String Date, String start, String end, String price){
        TextView dateText = mView.findViewById(R.id.dateText);
        TextView startText = mView.findViewById(R.id.depart_text);
        TextView endText = mView.findViewById(R.id.end_text);
        TextView priceText = mView.findViewById(R.id.price);

        dateText.setText(Date);
        startText.setText(start);
        endText.setText(end);
        priceText.setText(price);
    }


}

课程类

public class Courses {

private String driver, date, distance, preWaitTime, price, waitTime, client;

public Courses() {

}

public Courses(String driver, String date, String distance, String preWaitTime, String price, String waitTime, String client) {
    this.driver = driver;
    this.date = date;
    this.distance = distance;
    this.preWaitTime = preWaitTime;
    this.price = price;
    this.waitTime = waitTime;
    this.client = client;
}

public String getDriver() {
    return driver;
}

public void setDriver(String driver) {
    this.driver = driver;
}

public String getDate() {
    return date;
}

public void setDate(String date) {
    this.date = date;
}

public String getDistance() {
    return distance;
}

public void setDistance(String distance) {
    this.distance = distance;
}

public String getPreWaitTime() {
    return preWaitTime;
}

public void setPreWaitTime(String preWaitTime) {
    this.preWaitTime = preWaitTime;
}

public String getPrice() {
    return price;
}

public void setPrice(String price) {
    this.price = price;
}

public String getWaitTime() {
    return waitTime;
}

public void setWaitTime(String waitTime) {
    this.waitTime = waitTime;
}

public String getClient() {
    return client;
}

public void setClient(String client) {
    this.client = client;
}

}

这是数据库结构:

【问题讨论】:

  • 你可以发布你的数据库结构@Taha Elkhaoua。
  • 我用数据库结构编辑了帖子。
  • protected void onBindViewHolder(@NonNull CourseViewHolder holder, int position, @NonNull Courses model) { Log.i("Data", model.toString()); } 尝试获取日志并查看数据即将到来。还要在模型中添加 toString() 方法。

标签: android firebase firebase-realtime-database android-recyclerview firebaseui


【解决方案1】:

对不起,我应该发表评论,但我没有足够的声誉这样做。

我在你的代码中看不到任何类似的东西。

 FirebaseRecyclerAdapter<Courses, CourseViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Courses, CourseViewHolder>(
            Courses.class,
            R.layout.Courses,// should be your layout name 
            CourseViewHolder.class,
            mLocation
    ) {
        @Override
        protected void populateViewHolder(CourseViewHolder viewHolder, category model, final int position) {

            viewHolder.setName(model.getName());
            viewHolder.setImage(getApplicationContext(),model.getImage());

【讨论】:

  • 可以忽略populateViewHolder部分
  • 从 FirebaseUI 3 开始,popoulateViewHolder 被移除并被 onBindViewHolder 取代。
  • 适配器选项也是如此。
猜你喜欢
  • 1970-01-01
  • 2017-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多