ROM研发系统录音机中发现的问题:
场景:
- 列表界面
显示(设置默认均为收缩状态):
- 第一个条目有多个子view。
- 后面的条目可有多个或者单个子view。
现象:
- 点击第一个条目撑开子view。
- 长按下方的条目。
结果:
setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(
AdapterView<?> parent, View view, int position, long id) {
}
- 从onItemLongClick方法中获取的position为上一个条目+子条目的总和的位置。
引发问题:
- 一系列的问题:比如角标越界等问题。
解决方法:
TextView tv = (TextView) view.findViewById(R.id.tv_item_songs_name);
Log.d("flag", "tv.getText():" + tv.getText());
- 1.从onItemLongClick方法中的view获取到当前的控件的信息,然后根基findID得到TextView,再得到Text,即歌曲名字。
- 2.再根据歌曲的名称从当前的容器中查找所在的位置。
- 3.再把该位置传给adapter的checkBox。
结论:
点击、展开、收缩条目监听,提供的位置参数都是groupPosition(点击的组).
而长按监听,提供的参数是position(是当前条目(展开的、或者未展开的从最初位置开始数起的位置 )).