【发布时间】:2019-08-12 22:24:10
【问题描述】:
我有一个 RecyclerView,对于每个项目,您可以启动 EditActivity(用于结果)以使用 Firebase 更新您的文本。
问题是当你回到RecyclerView时,数据没有刷新
这是来自我的适配器的代码:
holder.editBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent edit_intent = new Intent(holder.authorText.getContext(), EditActivity.class);
edit_intent.putExtra("text", textList.get(position).getBody());
edit_intent.putExtra("id", textList.get(position).textId);
((Activity) context).startActivityForResult(edit_intent, 1);
}
});
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
notifyDataSetChanged();
}
}
}
这是我的 EditActivity 中的代码:
edit_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mProgress.setVisibility(View.VISIBLE);
edit_btn.setVisibility(View.INVISIBLE);
String new_text = edit_text.getText().toString();
mFirestore.collection("Text").document(text_id).update("body", new_text).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast.makeText(EditActivity.this, R.string.changes, Toast.LENGTH_LONG).show();
Intent intent = new Intent();
intent.putExtra("newText", new_text);
setResult(RESULT_OK, intent);
finish();
}
else{
String error = task.getException().getMessage();
Toast.makeText(EditActivity.this, R.string.error + error, Toast.LENGTH_LONG).show();
}
mProgress.setVisibility(View.INVISIBLE);
edit_btn.setVisibility(View.VISIBLE);
}
});
}
});
如何用新的 Text 刷新 RecyclerView 和 setText ?
非常感谢您的帮助:)
【问题讨论】:
-
我认为
onActivityResult()需要进入你的EditActivity而不是你的适配器 -
购买如何从 EditActivity 刷新 RecyclerView ?
-
还请说明如何将数据绑定到回收站视图。 Ali Ihsan 的解决方案可能有效,但可能有一种更短、更清洁的方法。
标签: java android firebase android-recyclerview google-cloud-firestore