android列表更新,安卓列表-ListView 更新某一项

d119768cc697bbb0e650728feb9b81e5.png

如上图,有一个列表,可能很长,有些没显示出来。当点击某一项时该项显示“正在播放”。

由于安卓并不像网页样,把所有列表项都加载起,而只是把当前需要显示的加载起,所以这个处理方式跟网页、跟 WinForm 还不一样。

首先,我们需要给 Adapter 设置一个 int 成员,比如名叫 m_playingIndex

用以记录当前播放项。

何时给这个 m_playingIndex 赋值呢?就是在 getView 中的 view.setOnClickListener  中。

然后,在Adapter 的 getView 中根据 m_playingIndex 值显示不同的图标holder.title.setText(datas.get(i).title);

if (i != m_playingIndex) {

// 显示正在播放按钮

}

else {

// 显示播放按钮

}

这个是在滚动时触发的,也就是说为了保证滚动时也能够在正确的位置显示正确的按钮。

最后,需要一个立即响应事件处理

第二步说了,那个只是在滚动时触发,不滚动时不触发,也就无法更新界面,那么我们需要在点击了之后也更新。

那我们就需要 Adapter 设置一个事件了,在前面为 m_playingIndex 赋值后,就触发这个事件,这个事件交由 Activity 中处理(因为我们要用 m_listView,所以用事件跳出 Adapter)。int visibleFirstPos = m_listView.getFirstVisiblePosition();

int visibleLastPos = m_listView.getLastVisiblePosition();

for (int i = visibleFirstPos; i <= visibleLastPos; i++) { // 注意 i <=

View view = m_listView.getChildAt(i - visibleFirstPos); // i 是指数据项 index,但并不一定与 listView 的控件项一一对应,所以这里 - visibleFirstPos

ViewHolder holder = (ViewHolder)view.getTag();

if (m_listViewAdapter.m_playingIndex == i) {

// 显示正在播放按钮

}

else {

// 显示播放按钮

}

}

关于事件,可以参见本连载前面的文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值