列表项子项不刷新

时间:2015-04-03 09:38:58

标签: android user-interface listitem

我正在编写一个自定义列表,其中显示的第三个列表项具有作为子项的切换按钮。在切换按钮上单击它会启动确认对话框,如果想要切换按钮。

现在如果列表没有滚动,那么它的工作完美。但是,如果滚动列表(因此第3项显示为第1项),则按钮切换状态(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;
            }

....

}

2 个答案:

答案 0 :(得分:0)

  1. 通过covertviiew .gettag和 检索复选框对象
  2. 将复选框可见性设置为Gone(此代码应始终运行)
  3. 检查行是否为3(如您所愿)并进行可见性更改
  4. 如果切换可见,则根据模型数据更新状态
  5. 更改切换时更新模型
  6. 这些是我们需要针对此类型特定要求执行的常规操作。如果你没有解决问题,请告诉我。

答案 1 :(得分:0)

优化ViewHolder实现所需的damm。并且获得目标项目视图效果很好。

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