我有两个简单的 Activity -
练习1:阵列中的ListView
Activity 2:EditText用于编辑 Activity 1中的单击的行
当我在Activity2中编辑值并返回到Activity1时,ListView不会重新加载新值。
当我从Activity2返回或恢复Activity1或将更新列表的内容时,我想刷新ListView。
我的代码:
static ArrayAdapter<String> dataAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Loading the values to list array
String[][] fulllist = loadArrays();
String[] list = new String[fulllist.length];
for(int i = 0; i<fulllist.length; i++) {
list[i] = fulllist[i][1];
}
// --------------------------------
dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
list);
setListAdapter(dataAdapter);
}
@Override
public void onResume() {
super.onResume();
// Loading the values to list array
String[][] fulllist = loadArrays();
String[] list = new String[fulllist.length];
for(int i = 0; i<fulllist.length; i++) {
list[i] = fulllist[i][1];
}
// --------------------------------
dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
list);
dataAdapter.notifyDataSetChanged();
}
loadArrays()只是将SharedPreferences转换为String Array的方法。 Activity2将新数据保存在SharedPreferences中,然后Activity1可以读取它(带有新数据)。
如果我返回到“主要 Activity ”(不是Activity1),然后返回到Activity1-将显示新数据,但是我希望当我从Activity2立即返回时,将更新此数据。
loadArrays()方法:pastebin.com/MHwNC0jK
预先感谢您!
最佳答案
在第一个 Activity 中单击该项目时,请使用startActivityForResult()
启动第二个 Activity
然后在Second Activity中,输入EditText
后,可能会有一个按钮。然后在该按钮调用的onClick
中,
intent.putExtra("edittextvalue", findViewById(R.id.edittext).getText().toString());
setResult(RESULT_OK, intent);
finish();
现在,您回到您的第一个 Activity ,在这里您必须实现
onActivityResult()
回调。您可以从该 Intent 的附加内容中提取数据,并将相应项设置在数组中,然后调用notifyDataSetChanged()
。理想情况下,这就是您应该如何做。
如果您想了解有关如何使用startActivityForResult()的更多信息,请尝试此链接-http://manisivapuram.blogspot.in/2011/06/how-to-use-startactivityforresult.html