各行にトグルボタンを備えたリストビューがありました.スクロールするとリストビューが更新されたため、スクロールするたびにトグルボタンの値も変更されましたか?
スクロールする前にユーザーが設定したように、トグルボタンの値をON/OFFに保ちたいですか?
getView関数の最初の行でこれを試してください
if (convertView != null) return convertView;
On Scrolling the Listview got refreshed,
のデフォルトの動作ですListView
。実際にはリフレッシュされず、メモリ内にListView
(オフセットを含む)表示されているだけです。Views
そして他人を破壊します。
I want to keep that Toggle button value
トグル ボタンの状態を追跡する必要があります。Local
arrayListに格納するように。そして、アダプターのメソッドでtogglebutton
状態を更新します。getView
ListView をsetChoiceMode()
(CHOICE_MODE_SINGLE
またはでCHOICE_MODE_MULTIPLE
) 使用するように設定し、Checkable を実装するカスタム行レイアウトを使用する必要があります。これにより、ListView はどの行が切り替えられたかを記憶します。
CheckedTextView の前に、ListView の行にチェックマークが表示されないカスタム Checkable レイアウトを作成する方法を詳しく説明しました。(それほど難しいことではありません。このアプローチでは、組み込みのアダプターを拡張せずに使用できます。)
ボタンを切り替えるときは、アダプターのデータ ソースも更新する必要があります。たとえば、arraylist を使用してアダプターを設定している場合、ボタンの切り替え時に、arraylist を更新する必要があります。
行のリサイクルを防止すると、リスト ビューの更新を防止することもできます。
以下を使用します。これにより、listView が処理されます。
View vi = convertView;
if (convertView == null) {
vi = inflater.inflate(R.layout.layoutFile, null);
holder = new ViewHolder();
holder.layout1 = (LinearLayout) vi
.findViewById(R.id.layoutcourse);
holder.text = (TextView) vi.findViewById(R.id.text);
holder.status = (ImageView) vi.findViewById(R.id.img_status);
holder.date = (TextView) vi.findViewById(R.id.date1);
holder.toggleButton = (ImageView) vi
.findViewById(R.id.toggleButton);
vi.setTag(holder);
} else
holder = (ViewHolder) vi.getTag();