【发布时间】:2014-09-25 01:58:57
【问题描述】:
我有一个从 SQL 数据库生成的列表视图。
用户可以单击其中一个列表项,然后会弹出一个对话框,其中包含“编辑”或“删除”选项。用户还可以点击底部的按钮将项目“添加”到数据库中。所有这些功能都可以正常工作,但是为了刷新列表视图,用户需要返回一个活动,然后再次前进。对话框关闭后如何让列表视图自动刷新??
代码如下:
final LevelTextDatabase ltb = new LevelTextDatabase(this);
final List<LevelText> texts = ltb.getLevelTexts(level);
final BaseAdapter theAdapter = new ArrayAdapter<LevelText>(this, android.R.layout.simple_list_item_1,
texts);
final ListView theListView = (ListView) findViewById(R.id.levelTextList);
theListView.setAdapter(theAdapter);
theListView.setFastScrollAlwaysVisible(true);
theListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id)
{
CharSequence options[] = new CharSequence[] {"edit", "delete"};
AlertDialog.Builder builder = new AlertDialog.Builder(EditLevelText.this);
builder.setTitle("What would you like to do?");
builder.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//user clicks edit
if (which == 0)
{
AlertDialog.Builder alert = new AlertDialog.Builder(EditLevelText.this);
alert.setTitle("Edit Criteria");
alert.setMessage("Edit: ");
final EditText input = new EditText(EditLevelText.this);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
ltb.editText(texts.get(position).getId(),
String.valueOf(input.getText()));
//insert refresh command here????
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
alert.show();
}
if (which == 1) {
ltb.deleteText(texts.get(position).getId());
//this refresh works
texts.remove(position);
theAdapter.notifyDataSetChanged();
}
}
});
builder.show();
}
});
}
//method for add button
public void addLevelText(View view) {
Intent prev = getIntent();
final int level = prev.getExtras().getInt("level");
final LevelTextDatabase ltb = new LevelTextDatabase(this);
AlertDialog.Builder alert2 = new AlertDialog.Builder(EditLevelText.this);
alert2.setTitle("Add Criteria");
alert2.setMessage("Add: ");
final EditText input = new EditText(EditLevelText.this);
alert2.setView(input);
alert2.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
ltb.addLevelText(new LevelText(level, String.valueOf(input.getText())));
//insert refresh here????
}
});
alert2.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
alert2.show();
}
【问题讨论】:
-
试试
theAdapter.notifyDatasetChanged();