android - 在另一个 Activity 中更新后刷新 ListView

标签 android listview android-arrayadapter

我有两个简单的 Activity - Activity 1:数组中的 ListView Activity2:在Activity1中编辑点击行的EditText

当我在 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 转换为字符串数组的方法。 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

关于android - 在另一个 Activity 中更新后刷新 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13643940/

相关文章:

java - KeyboardView 中的循环绘图

安卓键盘记录器

java - Android中如何将popupMenu添加到listView的项目中?

android - 如何在选定的特定项目下方显示列表?

android - 具有不同 ListView 数据的相同小部件

android - 从 ArrayAdapter 刷新 ListView

java - ListView 崩溃,无法处理 Holder 类

android - 如何在调用新的异步任务时终止以前的任务

java - 使用 11 之前的 Loader em API 版本

java - 为什么循环将 ArrayList 中添加的项目加倍