0
사용자가 listViews 요소 중 하나를 길게 클릭하면 데이터베이스에서 해당 항목을 제거 할 것인지 묻는 새로운 대화 상자가 나타납니다. 그렇다면 해당 대화 상자 조각 onCreateDialog 메서드에서 데이터베이스에서 항목을 제거합니다. 여기에 문제가있다 : main 프래그먼트에있는 listView를 새로 고치는 방법은 무엇입니까? 이 onCreateDialog데이터베이스에서 항목을 삭제 한 후 listView를 업데이트하는 방법은 무엇입니까?
공공 무효 handleNotes (최종의 ListView notesListView) {
if (database.getNoteCount() != 0) {
notesListView.setAdapter(new NoteAdapter(getActivity(), database.getAllNotes()));
notesListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
TextView textViewId = (TextView) view.findViewById(R.id.textViewId);
Toast.makeText(getActivity(), textViewId.getText().toString() + "", Toast.LENGTH_LONG).show();
DeleteNoteFragment newFragment = new DeleteNoteFragment(database, that, notesListView, Integer.parseInt(textViewId.getText().toString()));
newFragment.show(getActivity().getSupportFragmentManager(), "deleteConfirmation");
return false;
}
});
}
}
을 그리고 여기에 있습니다 : : 여기
는 ListView를 처리하기 위해 내 mainFragment 기능입니다public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(R.string.dialog_delete_note)
.setPositiveButton(R.string.dialog_delete_confirm, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
database.removeNote(i);
mainFragment.handleNotes(notesListView);
Toast.makeText(getActivity(), "Note deleted successfully!", Toast.LENGTH_LONG).show();
}
})
.setNegativeButton(R.string.dialog_delete_denny, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
// Create the AlertDialog object and return it
return builder.create();
}
내가 대화 조각 생성자에 어댑터를 통과해야 당신의 alongwith 어댑터를 새로 고침하고 처리하기 위해 다음 코드를 사용할 수 있습니까? 이 경우 어댑터가 최종 버전이 될 것이며 어댑터가 새로 고쳐지는 것을 멈추지 않을까요? –
어댑터는 새로운 값을 할당하지 않기 때문에 final로 선언 한 경우에도 'adapter.notifyDataSetChanged();'를 사용하여 새로 고칠 수 있습니다. 내장 된 메소드를 사용하여 내용을 새로 고치기 만하면됩니다 . – Brandon
Dialogs 단편에서 언급 한 방법을 사용해 보았습니다. 작동하지 않았습니다 ... –