2015-04-03 2 views
0

Я пишу пользовательский список, в котором отображаемый элемент 3-го списка имеет кнопку переключения в качестве дочернего. На кнопке переключения нажмите кнопку запуска диалогового окна подтверждения, если требуется кнопка переключения или нет.Список Детский ребенок не обновляется

Теперь, если список не прокручивается, он работает идеально. Но если список прокрутки (так третий отображается как 1-й элемент), тогда кнопка переключения состояния (для toggleButton.setChecked(false)) не работает после действия Dialog-Cancel.

Любое предложение, если мне что-то не хватает.

EDIT

public View getView(int position, View convertView, ViewGroup parent) { 
      View vi = convertView; 

      if(convertView == null) { 
       vi = inflater.inflate(R.layout.setting_prefernce_row, parent, false); 
       final ViewHolder viewHolder = new ViewHolder(); 

       viewHolder.title = (TextView)vi.findViewById(R.id.txtPreferenceName); // Preference Name 
       viewHolder.txtPreferenceSub = (TextView)vi.findViewById(R.id.txtPreferenceSub); // Sub-Preference Name 

       viewHolder.txtArrow = (TextView)vi.findViewById(R.id.txtArrow); // text before arrow 
       viewHolder.imgArrow = (ImageView)vi.findViewById(R.id.imgArrow); // right_arrow 

       viewHolder.btnToggleState = (ToggleButton)vi.findViewById(R.id.tglToggleState); // toggle button 
       viewHolder.switchTemperatureUnit = (ImageView)vi.findViewById(R.id.switchTemperatureUnit); // switch button for temperature 

       //viewHolder.checkbox.setTag(list.get(position)); 
       //viewHolder.scores.setTag(list.get(position)); 
       vi.setTag(viewHolder); 
      } else { 
       vi = convertView; 
      } 

.... 

} 
+1

Можете ли вы опубликовать также код? – Umair

+0

Как и [this] (http://stackoverflow.com/questions/19752239/listview-changing-items-during-scroll) вопрос .. И см. [This] (http://www.mindfiresolutions.com/Keeping- the-data-in-ListView-with-interactive-items-while-scrolling-in-Android-1621.php) также. –

+0

@NewDeveloper Я не думаю, что это та же проблема. То, с чем я столкнулся, мне нужен тот же вид из исходного индекса списка, а не из обновленного после прокрутки. – CoDe

ответ

0
  1. В.И. retrive через covertviiew .gettag и получить объект флажок
  2. Установите флажок видимости Унесенные (Этот код должен работать всегда)
  3. Проверьте строка равна 3 (как вы хотите) и измените видимость
  4. если переключатель отображается, обновите состояние, основанное на модели d ата
  5. Когда-либо переключение изменяется обновить модель

Это обычные вещи, которые мы должны сделать для этого конкретного требования типа. Если вы не решили проблему, сообщите мне.

0

Для оптимизации требуемой пропускной способности ViewHolder. И чтобы получить представление целевого объекта после отличных результатов.

for(int i = start, j = lstSettingPreference.getLastVisiblePosition(); i <= j; i++) { 
       if (ordinal == (int) lstSettingPreference.getItemAtPosition(i)) { 
        view = lstSettingPreference.getChildAt(i - start); 
        lstSettingPreference.getAdapter().getView(i, view, lstSettingPreference); 
        break; 
       } 
      } 

Ссылка ссылки: https://stackoverflow.com/a/9987616/2624806.