在我目前的项目中,我扩展了BaseAdapter(使用教程EfficientAdapter作为指南)来处理几种不同的自定义单元格类型,每种类型都有自己的自定义视图。其中一些单元类型启动异步操作(例如,播放和记录媒体)。当他们所属的活动消失时,我想暂停它们(其他几种细胞类型会导致这种情况发生)。有没有办法通知特定视图它所属的ListActivity正在消失?
我的第一个想法是在活动的onPause()
方法中迭代视图:
@Override
public void onPause() {
super.onPause();
for (int i = 0; i < adapter.getCount(); i++) {
CustomCellHolder holder = adapter./* Some magic goes here */;
holder.handlePause();
}
}
但我无法弄清楚如何迭代列表适配器拥有的视图。有没有办法做到这一点,还是我咆哮错误的树?
如果它是相关的,我的getView方法看起来像这样:
public View getView(final int position, View convertView, ViewGroup parent) {
CustomCellHolder holder;
if (convertView == null) {
/* Create and cache a new view */
holder = newHolderForItem(someArrayListOfObjects.get(position));
holder.setItem(feature.attributes.get(position));
holder.setActivity(MyListActivity.this);
convertView = holder.getView();
} else {
/* Load a cached view */
holder = (CustomCellHolder) convertView.getTag();
holder.setItem(feature.attributes.get(position));
holder.setActivity(MyListActivity.this);
}
holder.doSomeStuff();
return convertView;
}
答案 0 :(得分:2)
遍历listview中的子项以获取所需的自定义视图。如果View.getTag有一个持有者(因此是一个单元格),你可以检查它。
答案 1 :(得分:0)
如果您使用的是ArrayAdapter,只需使用“getItem(position)”方法即可。像:
CustomCellHolder holder = adapter.getItem(i);