如何在完成上一个活动后刷新活动中的列表视图?

时间:2017-07-22 17:40:52

标签: java android listview

我的活动之间的互动:

  1. 点击listview.java中的listview中的一行>

  2. 转到Edit.java编辑有关该特定行的信息>

  3. 完成编辑后,点击按钮,完成edit.java活动>

  4. 返回listview.java。

  5. 但是,在返回到listview.java FROM edit.java时,它不会显示先前单击的列表视图的特定行的新更新信息。

    只有当我离开listview活动并再次返回时,才会重新更新信息。

    listview.java:

                 <Header
                    statusBarProps={{ barStyle: 'light-content' }}
                    centerComponent={{ text: 'Dashboard', style: { color: '#fff' } }}
                    outerContainerStyles={{ backgroundColor: '#324C66' }}
                />
    

5 个答案:

答案 0 :(得分:1)

数据来自步骤1,2和3。

listview.java:

loggingIn

Edit.java:

loginFailed

答案 1 :(得分:0)

这取决于您的项目存储位置(数据库?)以及编辑活动是否将更改保存到数据库。假设是这种情况,你应该

  • 在listview活动中使用startActivityForResult()来启动编辑活动
  • 在编辑活动中,当用户完成后,使用setResult()finish()返回列表视图活动
  • 在listview活动中使用onActivityResult()检查您是否从编辑活动返回,如果是,则从数据库重新加载数据并使用listview的notifyDataSetChanged()

这只是一个基本的工作流程,可以进行各种优化。

答案 2 :(得分:0)

以下代码演示了listview的基本实现。

在关于创建方法的活动中:

    ListView listView = (ListView) findViewById(R.id.list);

    // Defined Array values to show in ListView
    String[] values = new String[] { "Android List View",
            "Adapter",
            "Simple List View ",
            "Create List View ",
            "Android Example",
            "List View ",
            "Array Adapter",
            "Android List View"
    };

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, values);

    listView.setAdapter(adapter);

在字符串数组(即值)上添加/删除/更新后,调用adapter.notifydatasetchanged(); 例如:在我的例子中,values数组中有8个项目:

    values[7] = "Android Example List View";
    adapter.notifyDataSetChanged();

然后您会看到列表视图已更新。实际上,您的适配器获取Array,然后将该数据发送到listview。 Listview直接不处理字符串数组。每次在Array上执行某种CRUD操作时,都会调用adapter.notifyDataSetChanged();列表视图反映您所做的更改。在应用程序中,我通常会将阵列替换为Arraylist,因为这样可以更轻松地添加和删除。

答案 3 :(得分:0)

那里有很多问题。首先,您要在intent中发送该对象的属性,而不是对象本身。最快的方式(不是最好的方式)是发送对象(SalesItemInformationLV saleitem2)。为此,对象需要实现Serializable接口。

这是传递可序列化对象的方法: Passing data through intent using Serializable

使用此解决方案非常重要:https://developer.android.com/training/basics/intents/result.html?hl=en-419

然后,在onActivityResult()中你应该调用adapter.notifyDataSetChanged();

请记住将适配器声明为全局属性(在方法之外)。

答案 4 :(得分:0)

您可以在onResume方法活动中使用adapter.notifyDataSetChanged();,但最好使用startActivityForResultsetResult方法。