2

我正在使用 firebase 数据库来存储数据,并使用 firebase 回收器适配器来显示数据。

RecyclerView recyclerView;
    static String SelectedCode;
    DatabaseReference root;

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

    Firebase.setAndroidContext(this);

    recyclerView=(RecyclerView)findViewById(R.id.recycler);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    root = FirebaseDatabase.getInstance().getReference();
    Query query = root.child("download").orderByChild("subjectCode");
    FirebaseRecyclerAdapter<CourseStorage, GetData.MessageViewHolder> adapter = new FirebaseRecyclerAdapter<CourseStorage, GetData.MessageViewHolder>(
            CourseStorage.class,
            android.R.layout.two_line_list_item,
            GetData.MessageViewHolder.class, query
    ) {
        @Override
        protected void populateViewHolder(MessageViewHolder viewHolder, final CourseStorage model, int position) {
            viewHolder.textView.setText(model.getSubjectCode());
        }
    };
    recyclerView.setAdapter(adapter);
}


public static class MessageViewHolder extends RecyclerView.ViewHolder{
    TextView textView;
    View mview;
    public MessageViewHolder(View itemView) {
        super(itemView);
        textView=(TextView)itemView.findViewById(android.R.id.text1);
        mview=itemView;

    }
}

CourseStorage 类中的 getSubjectCode 函数是

 public String getSubjectCode () {
    return subjectCode;
}

我的数据库是 数据库结构

我得到的输出为 在此处输入图像描述

我不希望相同的 subjectCode 显示两次。我怎样才能实现它?

4

1 回答 1

1

Firebase 数据库查询语言中没有GROUP BY子句。与使用 NoSQL 数据库时经常发生的情况一样,解决方案是以应用程序想要访问的方式存储数据。

就您而言,由于您要显示主题代码列表,因此我会在数据库中存储主题代码列表(除了您当前的数据)。例如:

latestItemKeyPerSubjectCode
  "COEG301": "-KM...38N"
  "COEG341": "-KM...vd-"
  ...

您存储的确切值实际上取决于您的需求。在这种情况下,我使用该主题代码存储了最新项目的密钥,但您也可以存储文件名(如果您想在应用程序中显示它)或者只是true如果您不需要有意义的值。

于 2016-07-09T17:06:02.080 回答