http://blog.csdn.net/welovesunflower/article/details/8045390

对于Activity A中的ListView列表,点击一项进入详细信息页面Activity B,在详细信息页面编辑后,再回到Activity A,这时会希望看到最新更新的内容,但是更新整个列表太耗时,有没有办法只更新一项呢?

这里可以考虑重写getView方法,把改变后的数据传递过来,如果改变的那一项在屏幕范围内,就重写getView。

主要代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  
/**
  
* 更新listview某一行
  
*
  
* @param itemIndex
  
*/
  
public void updateView(int itemIndex) {
  
HashMap<String, Object> target = mAppList.get(itemIndex);
  
int start = mListView.getFirstVisiblePosition();
  
for (int i = start, j = mListView.getLastVisiblePosition(); i <= j; i++)
  
if (target == mListView.getItemAtPosition(i)) {
  
View view = mListView.getChildAt(i - start);
  
mListView.getAdapter().getView(i, view, mListView);
  
break;
  
}
  
}
  
第二个问题ListView数据项是ArrayList<HashMap<String, Object>>从Activity B传递过来的是一个HashMap<String,Object>怎么更新ArrayList

主要代码


[html] view plaincopy
  
listItem.remove(mLastPosition);
  
listItem.add(mLastPosition, hashMap);
  
第三个问题Intent只能传递基本数据类型怎么在两个Activity之间传递HashMap类型的数据可以写一个继承自Application的类通过set ,get共享数据但是用完后别忘了释放哦


[html] view plaincopy
  
public HashMap<String, Object> hashMap;

public void setHashmap(HashMap<String, Object> map) {
  
this.hashMap = map;
  
}

public HashMap<String, Object> getHashmap() {
  
return hashMap;
  
}