0

我在 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);

非常感谢任何帮助

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

4

1 回答 1

1

这是因为视图回收。

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

我不认为它可以在 viewbinder 中完成,因为没有将位置传递给它(但老实说我从未尝试过)..

您可能必须在getView.

这是我以前的答案的链接,我在其中展示了如何使用 SimpleCursorAdapter 进行处理(它也可以修改为适用于 arrayadapter)。 所以回答

于 2012-05-27T20:38:48.900 回答