如果存在多个重复值,如何显示单个值?
How to show single value if multiple duplicate values exists?
我使用 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 class 中的 getSubjectCode 函数是
public String getSubjectCode () {
return subjectCode;
}
我的数据库是
我得到的输出为
我不希望相同的 subjectCode 显示两次。我怎样才能实现它?
Firebase 数据库查询语言中没有 GROUP BY
子句。与使用 NoSQL 数据库时的常见情况一样,解决方案是以您的应用程序想要访问它的方式存储数据。
在您的情况下,由于您显示的是主题代码列表,因此我会在数据库中存储主题代码列表(除了您的当前数据之外)。例如:
latestItemKeyPerSubjectCode
"COEG301": "-KM...38N"
"COEG341": "-KM...vd-"
...
您存储的确切值实际上取决于您的需要。在这种情况下,我存储了带有该主题代码的最新项目的密钥,但您也可以存储文件名(如果您想在您的应用程序中显示它)或者如果您不需要,只需 true
一个有意义的值。
我使用 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 class 中的 getSubjectCode 函数是
public String getSubjectCode () {
return subjectCode;
}
我的数据库是
我得到的输出为
我不希望相同的 subjectCode 显示两次。我怎样才能实现它?
Firebase 数据库查询语言中没有 GROUP BY
子句。与使用 NoSQL 数据库时的常见情况一样,解决方案是以您的应用程序想要访问它的方式存储数据。
在您的情况下,由于您显示的是主题代码列表,因此我会在数据库中存储主题代码列表(除了您的当前数据之外)。例如:
latestItemKeyPerSubjectCode
"COEG301": "-KM...38N"
"COEG341": "-KM...vd-"
...
您存储的确切值实际上取决于您的需要。在这种情况下,我存储了带有该主题代码的最新项目的密钥,但您也可以存储文件名(如果您想在您的应用程序中显示它)或者如果您不需要,只需 true
一个有意义的值。