2012-05-27 2 views
0

У меня странное поведение в ViewBinder. Все работает хорошо на TextViews. С CheckBoxes (удаленный в моем коде) и пользовательскими виджетами progressChart значения не сохраняются в правильной позиции List при прокрутке вниз и/или вверх. Все кажется очень случайным. Но TextViews всегда правильные. Вот мой код:ViewBinder создает случайный контент

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

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

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

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

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

Вот ссылка на предыдущий ответ на мой вопрос, где я расскажу, как обойтись с помощью SimpleCursorAdapter (его можно также изменить в appy для массива). SO Answer

+0

Его работа с текстом textView. Это означает, что ViewBinder только конвертирует несколько вариантов использования. Это делает его очень слабым – user1324936

+0

Не обязательно. он работает над всем ** в источнике данных **. Ваши флажки не являются частью источника данных. Если вы установите статус флажка в свой источник данных (я сделал это для торгового приложения некоторое время назад), тогда он будет читать/устанавливать состояние из этого, и вы можете создавать методы для переключения этого флажка в данные, поддерживающие адаптер, который будет затем вернитесь к списку через видоискатель. Большинство людей не хотят этого делать, поэтому они добавляют массив для хранения состояния дополнительных элементов, которые они хотят использовать, и используют 'getView'instead. – Barak

+0

Что вы понимаете под источником данных и как я помещаю его в источник данных? – user1324936

Смежные вопросы