1

各行にトグルボタンを備えたリストビューがありました.スクロールするとリストビューが更新されたため、スクロールするたびにトグルボタンの値も変更されましたか?

スクロールする前にユーザーが設定したように、トグルボタンの値をON/OFFに保ちたいですか?

4

5 に答える 5

1

getView関数の最初の行でこれを試してください

    if (convertView != null) return convertView;
于 2016-06-27T08:21:21.827 に答える
1
On Scrolling the Listview got refreshed,

のデフォルトの動作ですListView。実際にはリフレッシュされず、メモリ内にListView(オフセットを含む)表示されているだけです。Viewsそして他人を破壊します。

I want to keep that Toggle button value

トグル ボタンの状態を追跡する必要があります。LocalarrayListに格納するように。そして、アダプターのメソッドでtogglebutton状態を更新します。getView

于 2012-12-05T07:18:06.497 に答える
0

ListView をsetChoiceMode()(CHOICE_MODE_SINGLEまたはでCHOICE_MODE_MULTIPLE) 使用するように設定し、Checkable を実装するカスタム行レイアウトを使用する必要があります。これにより、ListView はどの行が切り替えられたかを記憶します。

CheckedTextView の前に、ListView の行にチェックマークが表示されないカスタム Checkable レイアウトを作成する方法を詳しく説明しました。(それほど難しいことではありません。このアプローチでは、組み込みのアダプターを拡張せずに使用できます。)

于 2012-12-05T07:17:42.610 に答える
0

ボタンを切り替えるときは、アダプターのデータ ソースも更新する必要があります。たとえば、arraylist を使用してアダプターを設定している場合、ボタンの切り替え時に、arraylist を更新する必要があります。

行のリサイクルを防止すると、リスト ビューの更新を防止することもできます。

于 2012-12-05T07:14:40.057 に答える
0

以下を使用します。これにより、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();
于 2012-12-05T07:20:14.077 に答える