Firebaseデータベースから始めます。私はDBに項目をプッシュできる小さなタスクトラッカーアプリケーションを作った。 Firebase UIとFriebaseRecyclerViewを使用しています。FirebaseUIの更新FirebaseRecyclerViewユーザのクリックによる子ども
問題はfirebaseRecyclerViewから項目のクリックで子を更新できません。以下は私のビューホルダーのコードです。しかし、チェックボックスのクリックでは、DBは期待どおりに更新されません。また、以下に
public static class TaskViewHolder extends RecyclerView.ViewHolder{
TextView title,description;
CheckBox checkBox;
FirebaseAuth mAuth;
FirebaseUser firebaseUser;
public TaskViewHolder(View v) {
super(v);
title = (TextView) v.findViewById(R.id.title);
description= (TextView) v.findViewById(R.id.Description);
checkBox = (CheckBox) v.findViewById(R.id.checkboxTaskRow);
mAuth = FirebaseAuth.getInstance();
firebaseUser = mAuth.getCurrentUser();
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RecyclerView recyclerView = (RecyclerView) v.findViewById(R.id.taskList);
final FirebaseRecyclerAdapter firebaseRecyclerAdapter = (FirebaseRecyclerAdapter) recyclerView.getAdapter();
if(checkBox.isChecked()) {
SpannableString content = new SpannableString(title.getText());
content.setSpan(new StrikethroughSpan(), 0, content.length(), 0);
title.setText(content);
content = new SpannableString(description.getText());
content.setSpan(new StrikethroughSpan(), 0, content.length(), 0);
description.setText(content);
}
else
{
description.setText(description.getText().toString());
title.setText(title.getText().toString());
}
}
});
} }
私のアダプタのコードである
final FirebaseRecyclerAdapter<UnitTask,TaskViewHolder> adapter =
new FirebaseRecyclerAdapter<UnitTask, TaskViewHolder>(UnitTask.class,R.layout.task,TaskViewHolder.class,userRef) {
@Override
protected void populateViewHolder(TaskViewHolder viewHolder, UnitTask model, int position) {
mAuth = FirebaseAuth.getInstance();
firebaseUser = mAuth.getCurrentUser();
viewHolder.title.setText(model.getTitle());
viewHolder.description.setText(model.getDescription());
viewHolder.checkBox.setChecked(model.isCompleted());
}
};
マイUnitTaskクラス
public class UnitTask {
public String title;
public String description;
boolean completed;
public UnitTask(String title, String description, boolean completed) {
this.title = title;
this.description = description;
this.completed = completed;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public boolean isCompleted() {
return completed;
}
public void setCompleted(boolean completed) {
this.completed = completed;
}
public UnitTask() {
// Do Nothing
}
}
すべてのヘルプははるかに高く評価されます。また、私はアンドロイドから始めているので、愚かなミスをすることを期待しています。
おかげ
まあ、私は文句を言わない、一般的な解決策になると思います。この権利のためのソリューションが組み込まれているはずですか? –
はい。 Googleは既に例を作り出している。ちょっと待って、私の更新の答えにそれを提供します。 – Robust
ありがとう!それが本当に助けになりました。 –