RecyclerView
にランダムな質問を表示したいと思います。質問に答えると(ライトまたは間違っている)、彼はアプリを閉じても、再びこのユーザーに表示されるべきではありません。その後、アクティビティがリロードされ、新しいランダムな質問が表示されます。Firebase:RecyclerViewを使用するユーザーごとに1回だけ表示する
ユーザーがデータベース内のすべての質問を表示すると、その時点で質問がないことを示すメッセージが表示されます。
私のコードは今すぐクリックした後に質問を見た場合、Firebase
データベースに入れています。
私はif
の文を入れようとしましたが(それは馬鹿馬鹿しい考えです)、短時間で動作します。基本的には、子が存在する場合、アクティビティをリロードします。データベースには何千もの質問がありますが、それはある期間働いてしまいますが、ある日はクラッシュします。
私の問題:
まず、私はまだ現れていない質問を「見つける」ための活動をn回をリロードする必要はありません。
第2に、ユーザーがメッセージを表示するためにすべての質問を表示するタイミングを判断できません。ここで
はコードです:
mDatabase = FirebaseDatabase.getInstance().getReference().child("Category").child(category_key).child("Questions");
query = mDatabase.orderByChild("randomId").startAt(randomValue).limitToFirst(1);
@Override
protected void onStart() {
super.onStart();
FirebaseRecyclerAdapter<Questions, QuestionViewHolder>
firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Photos, QuestionViewHolder>(
Question.class,
R.layout.question_grid,
QuestionViewHolder.class,
query
) {
@Override
protected void populateViewHolder(final QuestionViewHolder viewHolder, final Question model, int position) {
final String question_key = getRef(position).getKey();
final String category_key = getIntent().getExtras().getString("category_id");
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.child(question_key).child("ViwedBy").hasChild(mAuth.getCurrentUser().getUid())) {
finish();
startActivity(getIntent());
} else {
viewHolder.setQuestion(model.getQuestion());{
@Override
public void onClick (View v){
mDatabaseLike.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
mDatabaseTest = FirebaseDatabase.getInstance().getReference().child("Category").child(category_key).child("Questions").child(question_key).child("ViewedBy").child(mAuth.getCurrentUser().getUid());
mDatabaseTest.setValue(true);
finish();
startActivity(getIntent());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
}
}
@Override
public void onCancelled (DatabaseError databaseError){
}
});
mQuestionsList.setAdapter(firebaseRecyclerAdapter);
}
はそれを行うための任意のよりスマートな方法はありますか?
その他の質問:アクティビティ全体をリロードする必要がありますか、RecyclerViewのみをリロードする方法がありますか?
初! FirebaseRecyclerAdapterをFirebaseIndexRecyclerAdapterに置き換えようとすると実装されません。私はIndexedFirebaseRecyclerAdapterに関するドキュメントを見つけることができませんでした。私は間違って何をしていますか? –
このライブラリがインストールされていることを確認してくださいhttps://github.com/firebase/FirebaseUI-Android/blob/master/database/README.md – Linxy
ありがとうございました!それは働いている! –