如何解决为什么自定义对话框中的 EditText 不会立即加载 TextView 中的文本
我写了关于注释部分的源代码。
关于活动的描述(recyclerView
)。
地名、注释预览(textView
)、注释+按钮(imageView
)、预览图像(imageView
)。
如果点击note+按钮,会出现note自定义对话框。
自定义对话框有注释内容(EditText
)、取消按钮、确定按钮。
我使用 arrayList 管理了 recyclerView
的项目,所以我使用 arrayList 的索引将笔记内容(EditText
)发送到笔记预览(textView
)。
但是我在编辑笔记时遇到了麻烦。注释 + 按钮已被单击,自定义对话框中的注释内容 (EditText
) 不会立即加载注释预览 (textView
) 中的文本。
我该怎么办?
这是我的代码。
MemoActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_memo);
recyclerView = (RecyclerView) findViewById(R.id.rv_vertical);
linearLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);
arrayList = new ArrayList<>();
placeMemoAdapter = new PlaceMemoAdapter(arrayList,this,this);
recyclerView.setAdapter(placeMemoAdapter);
PlaceMemoData testData1 = new PlaceMemoData();
testData1.setPlaceMemoNumCircle("1");
testData1.setPlaceNameMemo("place1");
testData1.setMemoAddView(R.drawable.ic_add_memo);
testData1.setMemoPreView("content1");
testData1.setMemoPreViewImage(R.drawable.ic_memo_image);
arrayList.add(testData1);
PlaceMemoData testData2 = new PlaceMemoData();
testData2.setPlaceMemoNumCircle("2");
testData2.setPlaceNameMemo("place2");
testData2.setMemoAddView(R.drawable.ic_add_memo);
testData2.setMemoPreView("content2");
testData2.setMemoPreViewImage(R.drawable.ic_memo_image);
arrayList.add(testData2);
placeMemoAdapter.notifyDataSetChanged();
dialog01 = new Dialog(MemoActivity.this);
dialog01.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog01.setContentView(R.layout.add_memo);
dialog01.setCanceledOnTouchOutside(false);
}
public void showDialog01(final int position) {
dialog01.show();
Button bt_cancel_memo = dialog01.findViewById(R.id.bt_cancel_memo);
Button bt_ok_memo = dialog01.findViewById(R.id.bt_ok_memo);
bt_cancel_memo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog01.dismiss();
}
});
bt_ok_memo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText memo_content = dialog01.findViewById(R.id.memo_content);
if(memo_content.getText() == null) {
arrayList.get(position).setMemoPreView("");
placeMemoAdapter.notifyDataSetChanged();
dialog01.dismiss();
}else{
TextView MemoPre = (TextView) findViewById(R.id.memoPreView);
memo_content.setText(arrayList.get(position).getMemoPreView());
placeMemoAdapter.notifyDataSetChanged();
// loading time is very long.
// I clicked first item -> editText appears empty.
// right away I clicked second item -> editText appears first item`s text in textView.
// because of loading time.
MemoPre.setText(String.valueOf(memo_content.getText()));
//placeMemoAdapter.notifyDataSetChanged();
// That code looks like getting original note preview`s text.
// so I commented out that.
arrayList.get(position).setMemoPreView(String.valueOf(MemoPre.getText()));
placeMemoAdapter.notifyDataSetChanged();
dialog01.dismiss();
}
}
});
}
@Override
public void onItemClickListener(View view,int position) {
showDialog01(position);
}
+我知道使用 Android Studio 推荐的 DialogFragment
。
如果我得到答案或提示该问题,我会更改代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。