我有一般情况,但无法弄清楚如何处理它。
我有一个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 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时,仍然可以看到添加为朋友按钮,因为适配器ArrayList具有从服务器获取的旧数据,我甚至没有更改它们。
单击用户名时,我想到了 StartActivityForResult 。但是,当我点击添加为好友后,我可能不会回到ListView,在用户的个人资料中还有很多其他操作。
许多应用程序都可以轻松处理熟悉的案例。关于如何做到这一点的任何想法?
谢谢
修改
虽然下面给出的答案有效。它们不是最好的方法。
那么,更好的方法是调用listViewAdapter的静态方法来仅在其ArrayList中更新该值?
答案 0 :(得分:0)
gsingh2011的评论有效。但是,我猜你的评论将是“我通过查询服务器来填充ArrayList,我不想经常这样做”。
更一般地说,gsingh的评论可以转化为:你应该将你的适配器和'ViewProfileActivity'建立在相同的数据上。您可以通过在两者之间共享ArrayList(作为静态成员或公共成员或任何您想要的任何内容)来实现此目的。当您从“ViewProfileActivity”中更改某些内容后,一旦切换回它,ListView将自动更新(因为将再次调用其适配器上的getView(),这将根据新数据生成视图)。
上面的文字是对你问题的回答,但我要补充一些其他的评论: