更新ListView某一行

当从详情页面返回时,如何在Activity A的ListView中只更新编辑过的那一项?通过重写getView方法,接收并应用更改的数据,只刷新可视范围内的项,以提高性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于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;
	}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值