2

データを保存するためにfirebaseデータベースを使用し、データを表示するためにfirebase recyclerアダプターを使用しています。

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 を 2 回表示したくありません。どうすれば達成できますか?

4

1 に答える 1

1

GROUP BYFirebase データベース クエリ言語には句がありません。NoSQL データベースを使用する場合によくあることですが、解決策は、アプリがアクセスしたい方法でデータを保存することです。

あなたの場合、件名コードのリストを表示しているので、(現在のデータに加えて) データベースに件名コードのリストを保存します。例えば:

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

保存する正確な値は、ニーズによって異なります。この場合、最新のアイテムのキーをサブジェクト コードと共に保存しましたが、ファイル名を保存することもできます (それをアプリに表示したい場合) または単純trueに、意味のある値が必要ない場合です。

于 2016-07-09T17:06:02.080 に答える