我有一个使用listView的android应用程序。单击列表中的任何项目后,它会显示AlertDialog,您可以在其中选择编辑或删除。单击编辑后,它会启动一个新的意图,发送一些额外的字符串来填充表单进行编辑。我想点击EditActivity中的按钮保存后刷新列表。
我已经阅读了notifyDataSetChanged()
,我认为它可以正常工作我只想知道MainClass
(listView类)中是否有任何方法,并且在我回来后立即执行来自intent,在EditActivity中单击“保存”按钮后立即执行。
或者,我可以在notifyDataSetChanged()
开始活动后添加MainActivity
方法吗?
答案 0 :(得分:1)
您可以在活动onResume()函数中添加listView.notifyDataSetChanged()。
@Override
public void onResume(){
super.onResume();
yourListView.notifyDataSetChanged();
}
答案 1 :(得分:1)
在您的主要课程中打开startActivityForResult()
然后实施EditActivity
方法时,请使用onActivityResult
方法。在那里,您将能够使用notifyDataSetChanged
<强> Read this from the doc 强>
答案 2 :(得分:1)
使用startActivityForResult
来呼叫您的EditActivity
(这不是最简单的方式来做您想做的事情,但是这是的好方法),通过使用你可以找出你的编辑结果
Intent i = new Intent(this, EditActivity.class);
startActivityForResult(i, 1);
在EActivity中设置要返回MainActivity的数据
Intent returnIntent = new Intent();
returnIntent.putExtra("result",YOUR_RESULT); // skip if you do not want to return special result
setResult(RESULT_OK,returnIntent);
finish();
如果您想发送取消操作(在您的情况下失败编辑),请使用此
Intent returnIntent = new Intent();
setResult(RESULT_CANCELED, returnIntent);
finish();
现在,在MainActivity
课程中,请编写onActivityResult()
方法
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String result=data.getStringExtra("result"); // result sent from EditActivity
listViewAdapter. notifyDataSetChanged();
}
if (resultCode == RESULT_CANCELED) {
//Write your code if there's no result
}
}
}//onActivityResult
答案 3 :(得分:1)
public class yourClass extends ListActivity {
//define a class variable here.
private ArrayAdapter<Friend> adapter;
@Override
public void onCreate(Bundle savedInstanceState){
//Change this line setListAdapter(new ArrayAdapter<Friend>(this, android.R.layout.simple_list_item_1, db.getAllFriends()));
to
adapter = new ArrayAdapter<Friend>(this, android.R.layout.simple_list_item_1, db.getAllFriends());
setListAdapter(adapter);
}
@Override
public void onResume(){
super.onResume();
adapter.notifyDataSetChanged();
}
}