昨天研究一下午,发现API上没有这种方法
不过今天早上,用了一种比较笨的方法,也可以实现,只不过实现的笨拙令我比较汗颜,先行记录下来,以便以后修改
private void initItemclick() {
iv_diange = (ImageView) lv_csong.getSelectedView().findViewById(
R.id.iv_music_dg);
iv_shoucang = (ImageView) lv_csong.getSelectedView().findViewById(
R.id.iv_music_sc);
iv_diange.setVisibility(View.VISIBLE);
iv_shoucang.setVisibility(View.VISIBLE);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
// 初始化item的点歌和收藏图标,并且设置成可见的
initItemclick();
// 计算出选中以外的数据,并且设置成隐藏的
others(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
private void others(int position) {
Object[] c = null;
List<Integer> a = new ArrayList();
// 增加List a 的数据,因为一共显示10条,所以直接加10条
for (int i = 0; i < 10; i++) {
a.add(i);
}
// 算出如果postion的位置是哪个,那么在list中消除postion位置的数据
for (int j = 0; j <= position; j++) {
if (j == position) {
a.remove(position);
}
// 把a转换成数组
c = a.toArray();
}
// 因为一个被选中另一个必然被放开,所以就设定循环9次,把C[i]都界定出来
for (int i = 0; i < 9; i++) {
lv_csong.getChildAt((Integer) c[i]).findViewById(R.id.iv_music_dg)
.setVisibility(View.INVISIBLE);
lv_csong.getChildAt((Integer) c[i]).findViewById(R.id.iv_music_sc)
.setVisibility(View.INVISIBLE);
}
}