ViewBinder создает случайный контент

У меня странное поведение в 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

1 ответ

Решение

Это из-за переработки отходов.

Вам необходимо создать объект для хранения статуса ваших флажков и настроить свои представления из этого в вашем адаптере.

Я не думаю, что это может быть сделано в видоискателе, поскольку позиция не передается ему (но, честно говоря, я никогда не пробовал)..

Вам, вероятно, придется сделать это в getView,

Вот ссылка на мой предыдущий ответ, где я показываю, как это сделать с помощью SimpleCursorAdapter (его также можно изменить, чтобы применить к адаптеру массива). ТАК Ответ

Другие вопросы по тегам