您每次都要实例化一个新的适配器.您需要做的是在单击侦听器之前放置实例化适配器的行,并在单击侦听器中修改该适配器并在其上调用notifyDataSetChanged().您当然必须向适配器添加一些setter才能修改数据.
必须看起来像这样:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.config_hidden);
listView=(ListView) findViewById(R.id.hiddenList);
//instantiate the adapter (just one time)
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, xmlFileManager.getHiddenNumbers());
//assign the adapter to the listview
listView.setAdapter(adapter);
xmlFileManager=new XmlFileManager(this);
addNumber=(Button) findViewById(R.id.addNum);
addNumber.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
LayoutInflater factory = LayoutInflater.from(HiddenCall.this);
final View alertDialogView = factory.inflate(R.layout.add_number, null);
AlertDialog.Builder adb = new AlertDialog.Builder(HiddenCall.this);
adb.setView(alertDialogView);
adb.setTitle(R.string.dialog_title);
adb.setIcon(R.drawable.phone);
final AlertDialog alertDialog = adb.create();
adb.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
numberToAdd=(EditText) alertDialogView.findViewById(R.id.numberToAdd);
String number = numberToAdd.getText().toString();
if(number.length()>0){
xmlFileManager.addNumberToXml(number , HIDDEN_NUMBER_TYPE);
//adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_1, xmlFileManager.getHiddenNumbers());
//adapter.setNotifyOnChange(true);
//set the changed data
adapter.setData(xmlFileManager.getHiddenNumbers());
//notify that the model changed
adapter.notifyDataSetChanged();
}
} });
adb.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
alertDialog.dismiss();
} });
adb.show();
}
});
//adapter.notifyDataSetChanged();
//adapter.setNotifyOnChange(true);