2015-04-03 47 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