ViewBinder会创建随机内容

时间:2012-05-27 20:18:12

标签: android android-viewbinder

我在ViewBinder中有奇怪的行为。一切都适用于TextViews。使用CheckBoxes(在我的代码中删除)和自定义小部件progressChart,当我向下和/或向上滚动时,值不会存储在List的右侧位置。一切似乎都很随机。但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);

非常感谢任何帮助

我发现了类似的问题,但答案不适合我的代码。 Problems with the ViewBinder

1 个答案:

答案 0 :(得分:1)

这是因为视图回收。

您需要创建一个对象来保存复选框的状态,并根据适配器中的视图设置视图。

我不认为它可以在viewbinder中完成,因为这个位置没有被传递给它(但说实话我从来没有尝试过)..

您可能必须在getView中执行此操作。

以下是我之前的答案的链接,其中我展示了如何使用SimpleCursorAdapter(它也可以修改为适用于arrayadapter)。 SO Answer