2015-04-03 36 views
0

我正在写一个自定义列表,其中显示的第三个列表项目具有切换按钮作为孩子。在切换按钮点击它启动一个确认对话框,如果需要切换按钮或不。列表项目小孩不刷新

现在,如果列表没有滚动,那么它的工作完美。但如果滚动列表(所以第三显示为第一项),然后按钮切换状态(toggleButton.setChecked(false)Dialog-Cancel行动后不工作。

任何建议,如果我什么都没有。

编辑

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 2015-04-03 09:40:34

+0

类似于[this](http://stackoverflow.com/questions/19752239/listview-changing-items-during-scroll)的问题..并参见[this](http://www.mindfiresolutions.com/Keeping- ListView-with-interactive-items-while-scroll-in-Android-1621.php)也.. – 2015-04-03 09:45:16

+0

@NewDeveloper我不认为这是同一个问题。我面对的是,我需要从原始列表索引中看到相同的视图,而不是从滚动后更新的视图。 – CoDe 2015-04-03 09:50:04

回答

0
  1. VI通过covertviiew .gettag retrive后 检索复选框对象
  2. 设置复选框能见度飘(此代码应始终运行)
  3. 检查行是3(如你所愿),并使可见性改变
  4. 如果切换是可见的更新状态基于莫德尔数据
  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