【发布时间】:2022-01-21 11:04:43
【问题描述】:
我正在尝试将 SQLite 数据库中的数据显示到自定义列表视图。数据是从自定义对话框中插入的,用户单击它应该更新列表视图的肯定按钮,但列表视图不会更新。只有当我单击后退按钮并重新进入活动时,它才会更新。我该怎么办?
SubjectListActivity.java
public class SubjectListActivity extends AppCompatActivity {
private ListView lv_SubjectList;
private FloatingActionButton btn_subjectAdd, btn_subjectView;
DatabaseHelper databaseHelper;
ArrayList<SubjectListModel> arrayList;
SubjectListAdapter subjectListAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_subject_list);
intViews();
databaseHelper = new DatabaseHelper(this);
arrayList = new ArrayList<>();
loadListView();
btn_subjectAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openDialog();
loadListView();
}
});
btn_subjectView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
private void loadListView () {
arrayList = databaseHelper.getAllSubjectListData();
subjectListAdapter = new SubjectListAdapter(this, arrayList);
lv_SubjectList.setAdapter(subjectListAdapter);
}
public void openDialog () {
SubjectListDialog subjectListDialog = new SubjectListDialog();
subjectListDialog.show(getSupportFragmentManager(), "subject list dialog");
}
private void intViews() {
lv_SubjectList = findViewById(R.id.lv_SubjectList);
btn_subjectView = findViewById(R.id.btn_subjectDelete);
btn_subjectAdd = findViewById(R.id.btn_subjectAdd);
}
}
SubjectListDialog.java
public class SubjectListDialog extends AppCompatDialogFragment {
private EditText et_subjectCode, et_subjectName, et_creditHour;
DatabaseHelper databaseHelper;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
databaseHelper = new DatabaseHelper(getContext());
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.subject_list_dialog_layout, null);
builder.setView(view)
.setTitle("Add Subject")
.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
})
.setPositiveButton("confirm", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
insert();
}
});
et_subjectCode = view.findViewById(R.id.et_subjectCode);
et_subjectName = view.findViewById(R.id.et_subjectName);
et_creditHour = view.findViewById(R.id.et_creditHour);
return builder.create();
}
private void insert() {
boolean result = databaseHelper.insertSubjectList(et_subjectCode.getText().toString(), et_subjectName.getText().toString(),Integer.parseInt(et_creditHour.getText().toString()));
if (result) {
Toast.makeText(requireContext(), "Data has been added", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(requireContext(), "Please insert all the fields correctly", Toast.LENGTH_SHORT).show();
}
}
}
【问题讨论】:
标签: java android sqlite listview dialog