Android 如何更改以前活动中的数据
我有一个大致的情况,但不知道如何处理它 我有一个列表视图,每个项目都有不同的可点击视图。其中1个是项目中用户名旁边的添加为好友按钮 因此,在ListViewAdapter的getView()中,我以这种方式为这个按钮实现了onClickAndroid 如何更改以前活动中的数据,android,listview,Android,Listview,我有一个大致的情况,但不知道如何处理它 我有一个列表视图,每个项目都有不同的可点击视图。其中1个是项目中用户名旁边的添加为好友按钮 因此,在ListViewAdapter的getView()中,我以这种方式为这个按钮实现了onClick onClick(){ //make the button invisible, for UX //change the value of is_friend = 1, in the Adapter ArrayList, which will be helpfu
onClick(){
//make the button invisible, for UX
//change the value of is_friend = 1, in the Adapter ArrayList, which will be helpful when listView is scrolled and getView is called again, to make it visible or invisible.
//Send the info to the server as an AsyncTask
}
这个很好用
问题:
我可以单击用户名转到他的个人资料,然后单击该活动中的添加为朋友按钮,而不是单击添加为朋友按钮
现在,当我回到ListView时,addasfriend按钮仍然可见,因为AdapterArrayList有从服务器获取的旧数据,我甚至没有更改它们
当点击用户名时,我想到了StartActivityForResult。但我可能不会在单击“添加为好友”后立即返回列表视图,因为在用户配置文件上还有很多其他操作
许多应用程序都可以轻松处理一个熟悉的案例。你知道怎么做吗
多谢各位
编辑:
尽管下面给出的答案有效。它们不是最好的方法
因此,更好的方法可能是调用listViewAdapter的静态方法,仅在其ArrayList中更新该值???gsingh2011的注释有效。然而,我猜您的评论会是“我通过查询服务器来填充ArrayList,我不想经常这样做” 更一般地说,gsingh的评论可以翻译为:您应该将适配器和“ViewProfileActivity”基于相同的数据。您可以通过在两者之间共享ArrayList来实现这一点(作为静态、公共成员或任何您想要的内容)。然后,当您从“ViewProfileActivity”中更改某些内容时,切换回ListView后,ListView将自动更新(因为将再次在其适配器上调用getView(),该适配器将根据新数据生成视图) 以上文字是对你问题的回答,但让我补充几点:
- 您说您正在向异步任务中的服务器发送信息。您应该将此更改为为此使用(意图)服务。当您的活动放在后台时,您不能保证您的数据将被完全发送。如果您将此服务器同步委托给服务,它将确保您的进程保持足够长的时间,以便完成发送
- 一旦你有了这个服务,那将是一个很好的地方来放置你的“共享数据”,如上所述。您还可以为此使用一个小型数据库,并让服务仅处理本地数据库和远程服务器之间的同步。然后,您的设备开始看起来像REST实现,您的设备正在本地缓存远程数据,但最终只是可视化远程服务器的状态。您可以查看一个关于处理REST服务器的优秀google i/o演示。如果您对其余部分不感兴趣,那么本演示也很不错,因为(可能更重要的是)它向您展示了在保证数据成功持久化时必须考虑的事项