私はarrayadapterでリストビューを持っています。リスト項目内のボタンをクリックすると、その項目の特定のビュー (他の項目ではなく) が表示または非表示になります。
アダプターの 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 メソッドは正しく呼び出されますが、ビューが表示される場合と表示されない場合があり、これはリストのスクロール位置に依存します。
私が間違っていることと、これをどのように解決する必要がありますか?