我有一个带有ArrayAdapter的ListView。当点击列表项内的按钮时,我希望该项中特定的视图(而不是其他项中的视图)可见或隐藏。
以下是在适配器的getView()方法中所做的代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = vi.inflate(layoutResourceId, null, false);
holder = new Holder();
holder.setShare((ImageView) convertView.findViewById(R.id.share));
holder.setShareButtons((LinearLayout)convertView.findViewById(R.id.shareButtons));
convertView.setTag(holder);
}
holder = (Holder) convertView.getTag();
holder.getShare().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(holder.getShareButtons().getVisibility()==View.GONE){
holder.getShareButtons().setVisibility(View.VISIBLE);
}
else{
holder.getShareButtons().setVisibility(View.GONE);
}
}
});
return convertView;
}
但是我得到的结果却很奇怪。虽然 OnClickListener 和 setVisibility 方法被正确调用,但我的视图有时可见,有时不可见,这取决于列表滚动位置。
我做错了什么?该如何解决?