Android:以编程方式更改Listview中的EditText样式

时间:2015-05-16 06:58:30

标签: android listview android-listview android-styles

我有一个包含1-Checkbox,1-EditText和2-TextView的列表视图。我想要做的是当我点击checkBox然后根据检查状态EditText样式也应该更改。我已经在Baseadapter中编写了getView()方法,如下所示:

我做错了什么?

    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();
                    }
                });

1 个答案:

答案 0 :(得分: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);
        }
}
}