2015-05-16 123 views
-3

我有1-Checkbox,1-EditText和2-TextView的列表視圖。我想要做的是當我點擊checkBox然後根據檢查狀態EditText樣式也應該改變。我已經在Baseadapter getView()方法編碼如下:Android:以編程方式更改ListView中EditText的樣式

我做錯了什麼?

holder.checkBox.setTag(holder.editText); 
    if (boolAdpaterArrayList.get(position)) { 
        holder.editText.setTextAppearance(context, 
          R.style.edittextStyleChecked); 
        holder.checkBox.setChecked(true); 
       } else { 
        holder.editText.setTextAppearance(context, 
          R.style.edittextStyleUnchecked); 
        holder.checkBox.setChecked(false); 
       } 
     } 

holder.checkBox 
       .setOnCheckedChangeListener(new OnCheckedChangeListener() { 

        @Override 
        public void onCheckedChanged(CompoundButton view, 
          boolean isChecked) { 
        EditText editText = (EditText)buttonView.getTag(); 
        if(isChecked){ 
         editText.setTextAppearance(context, 
            R.style.edittextStyleChecked); 
        }else{ 
         editText.setTextAppearance(context, 
            R.style.edittextStyleUnchecked); 
       } 
       notifyDataSetChanged(); 
        } 
       }); 
+0

爲什麼downvote ??? – Pankaj

+0

你點擊複選框項目後再次刷新列表視圖適配器嗎? –

+0

是的,我通過notifyDataSetChanged() – Pankaj

回答

0

使用check box state changed listener。如果您使用ViewHolder模式,那麼您可以輕鬆地從參數中提取viewHolder。 它應該看起來像這樣

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
ViewHolder holder = (ViewHolder) buttonView.getTag(); 
if (isChecked) { 
      holder.editText.setTextAppearance(context, 
        R.style.edittextStyleChecked); 
     } else { 
      holder.totalRoom.setTextAppearance(context, 
        R.style.edittextStyleUnchecked); 
     } 
} 
} 
+0

無法正常工作。用notifydataSetchanged也檢查 – Pankaj

+0

嗯,我只是注意到你使用兩個不同的持有人項目進行檢查和未檢查(editText和totalRoom)。在這兩種情況下嘗試使用editText或totalRoom。 – torque203

+0

我編輯了這個問題,它也沒有什麼不同 – Pankaj

相關問題