更新ListView某一行

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

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

主要代码:

	/**
		 * 更新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。

主要代码:

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

	public HashMap<String, Object> hashMap;

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

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

你可能感兴趣的:(更新ListView某一行)