java - 为什么自定义对话框中的 EditText 不会立即在 TextView 中加载文本
问题描述
我写了关于笔记部分的源代码。
描述 Activity( recyclerView
)。地名,笔记预览(textView
),笔记+按钮(imageView
),预览图像(imageView
)。
如果单击注释+按钮,将出现注释自定义对话框。自定义对话框有注释内容(EditText
)、取消按钮、确定按钮。
我使用arrayList 管理项目recyclerView
,所以我确实使用arrayList 的索引将注释内容( EditText
)发送到注释预览( )。textView
但是当注释被编辑时我遇到了麻烦。单击注释 + 按钮,EditText
自定义对话框中的注释内容()不会立即在注释预览(textView
)中加载文本。
我应该怎么办?
这是我的代码。
备忘录活动.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);
}
+我知道使用DialogFragment
Android Studio 的推荐。如果我得到答案或提示该问题,我将更改代码。
解决方案
推荐阅读
- sql-server - 当查询文本具有特定数量的字符时 SQL Server 性能变慢
- ios - 自定义 Cocoapod 总是返回“No such module XXX”
- recursion - 超出堆栈限制(0.2Gb)...可能无限递归(循环):
- javascript - jQuery 将元素 id 转换为逗号分隔的字符串
- sql-server - 查询获取一对多和多对一员工项目关系
- android - android:图形内存极高
- bash - 根据文本文件中的列表从一系列目录中复制文件
- java - 如何决定分配给 Java 堆的物理内存量?
- googlebot - 如何报告 GoogleBot 的错误?
- bdd - 这是验证 API 授权的正确语法吗?given().get("url").when().auth("username","pwd").then().assertthat().statuscode(200)