我有带有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 和 setVisibilty 方法被正确调用,但我的视图有时会变得可见,有时不可见,这取决于列表滚动位置。
我做错了什么,我应该如何解决这个问题?