0

ViewBinderに奇妙な振る舞いがあります。すべてTextViewsでうまく機能します。チェックボックス(コードで削除)とカスタムウィジェットのprogressChartを使用すると、下または上にスクロールしたときに、値がリストの正しい位置に保存されません。すべてが非常にランダムに見えます。しかし、TextViewsは常に正しいです。これが私のコードです:

SimpleAdapter.ViewBinder viewBinder = new SimpleAdapter.ViewBinder() {
            @Override
            public boolean setViewValue(View view, Object data,
                    String textRepresentation) {
                if (view.getId() == R.id.progress) {
                    ProgressChart progressChart = (ProgressChart) view;

                progressChart.setVisibility(ImageButton.GONE);
                    } else {
                        if (x.substring(0, 1).equals("1")) {
                            int theProgress = Integer.parseInt(x.substring(1));
                            progressChart.setProgressDarkRed(theProgress);
                        }
                }
                if (view.getId() == R.id.textView1) {
                    TextView textView = (TextView) view;
                    textView.setText((String) data);
                }
                return true;
            }
        };
        simpleAdapter.setViewBinder(viewBinder);
        setListAdapter(simpleAdapter);

どんな助けでも大歓迎です

同様の問題を見つけましたが、答えは私のコードに適合しません。 ViewBinderの問題

4

1 に答える 1

1

ビューのリサイクルによるものです。

チェックボックスのステータスを保持するオブジェクトを作成し、それからアダプタでビューを設定する必要があります。

位置がビューバインダーに渡されないので、ビューバインダーでそれを行うことはできないと思います(しかし、正直に言って、私は試したことがありません)。

あなたはおそらくでそれをしなければならないでしょうgetView

これは私の以前の回答へのリンクで、SimpleCursorAdapterを使用してそれを実行する方法を示しています(arrayadapterにappyに変更することもできます)。 SO回答

于 2012-05-27T20:38:48.900 に答える