質問: ListViewのgetItemがスクロールするたびにおかしくなる
回答: convertViewがnullのときのViewHolder作るときにクリック処理実装してるのが問題だと思います。 37から72行目は各レコード毎に処理すべき内容ですよね? なら78行目に持っていくべきです。 ListViewというViewは大量にViewを作ります。 なので、Androidの内部では処理遅延を解消する為、Viewを新たに作らず、使い回したりして重くならないように制御されてます。 getViewで使い回されてるViewなのかチェックしているのがif(convertView!=null)です。 つまり、使い回されてる場合、クリック処理を設定していないコードになっています。 よって、使い回されたとき、前のクリック処理が生きてて、別のViewを操作してしまっている と思いました。 また、onClick内でgetCount()するのも良くないです。 クリックされタイミングのListの上限を返すので、リストが可変であるならgetViewで参照したItemとクリック時のItemが異なる可能性があります。 20行目のItemにfinal修飾子を付けて、onClick内からもこの変数を参照しましょう