我正在嘗試將 SQLite 資料庫中的資料顯示到自定義串列視圖。資料是從自定義對話框中插入的,用戶單擊它應該更新串列視圖的肯定按鈕,但串列視圖不會更新。只有當我單擊后退按鈕并重新進入活動時,它才會更新。我該怎么辦?
主題串列活動.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();
}
}
}
uj5u.com熱心網友回復:
看起來,用戶單擊肯定按鈕后,您不會重新加載資料。您可以重寫 onResume 方法并添加更多代碼來更新串列中的資料并呼叫adapter.notifyDataSetChanged()來重繪 串列視圖中的資料。
uj5u.com熱心網友回復:
將此代碼放入您的 onResume()
databaseHelper = new DatabaseHelper(this);
arrayList = new ArrayList<>();
loadListView();
實際上有很多方法可以在 recyclerview 中獲取重繪 資料。但根據我的經驗,我總是這樣做,因為它易于使用,并且可以作業。您可以嘗試通過此https://developer.android.com/guide/components/activities/activity-lifecycle了解android的生命周期
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406830.html
標籤:
