package com.dtr.settingview.lib; import android.content.Context; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.TypedValue; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import com.dtr.settingview.lib.entity.SettingViewItemData; import com.dtr.settingview.lib.item.BasicItemViewH; import com.dtr.settingview.lib.item.BasicItemViewV; import com.dtr.settingview.lib.item.CheckItemViewH; import com.dtr.settingview.lib.item.CheckItemViewV; import com.dtr.settingview.lib.item.ImageItemView; import com.dtr.settingview.lib.item.SwitchItemView; import com.dtr.settingview.lib.item.SwitchItemView.onSwitchItemChangedListener; import com.dtr.settingviewlib.R; public class SettingButton extends LinearLayout { private ImageView mTopDivider; private ImageView mBottomDivider; private onSettingButtonClickListener mSettingButtonClickListener; private onSettingButtonSwitchListener mSettingButtonSwitchListener; public SettingButton(Context context, AttributeSet attrs) { super(context, attrs); setOrientation(LinearLayout.VERTICAL); mTopDivider = new ImageView(context); mTopDivider.setBackgroundResource(R.drawable.divider); mBottomDivider = new ImageView(context); mBottomDivider.setBackgroundResource(R.drawable.divider); } public void setAdapter(SettingViewItemData data) { LinearLayout.LayoutParams dividerLps = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); // Add Top Divider addView(mTopDivider, dividerLps); // Add Content initItemView(data); // Add Bottom Divider addView(mBottomDivider, dividerLps); } private void initItemView(SettingViewItemData data) { FrameLayout itemView = data.getItemView(); if (itemView instanceof SwitchItemView) { ((SwitchItemView) itemView).fillData(data.getData()); itemView.setClickable(false); ((SwitchItemView) itemView).setOnSwitchItemChangedListener(new onSwitchItemChangedListener() { @Override public void onSwitchItemChanged(boolean isChecked) { // TODO Auto-generated method stub if (null != mSettingButtonSwitchListener) { mSettingButtonSwitchListener.onSwitchChanged(isChecked); } } }); } else { itemView.setClickable(data.isClickable()); itemView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (null != mSettingButtonClickListener) { mSettingButtonClickListener.onSettingButtonClick(); } } }); if (itemView instanceof BasicItemViewH) { ((BasicItemViewH) itemView).fillData(data.getData()); } else if (itemView instanceof BasicItemViewV) { ((BasicItemViewV) itemView).fillData(data.getData()); } else if (itemView instanceof ImageItemView) { ((ImageItemView) itemView).fillData(data.getData()); } else if (itemView instanceof CheckItemViewH) { ((CheckItemViewH) itemView).fillData(data.getData()); } else if (itemView instanceof CheckItemViewV) { ((CheckItemViewV) itemView).fillData(data.getData()); } } int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.setting_view_min_height), getResources().getDisplayMetrics()); LinearLayout.LayoutParams lps = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, height); addView(itemView, lps); } public interface onSettingButtonClickListener { void onSettingButtonClick(); } public void setOnSettingButtonClickListener(onSettingButtonClickListener listener) { this.mSettingButtonClickListener = listener; } public interface onSettingButtonSwitchListener { public void onSwitchChanged(boolean isChecked); } public void setOnSettingButtonSwitchListener(onSettingButtonSwitchListener listener) { this.mSettingButtonSwitchListener = listener; } public FrameLayout getItemView() { return (FrameLayout) getChildAt(1); } public void modifyTitle(String title) { FrameLayout itemView = getItemView(); if (itemView instanceof SwitchItemView) { ((SwitchItemView) itemView).getmTitle().setText(title); } else { if (itemView instanceof BasicItemViewH) { ((BasicItemViewH) itemView).getmTitle().setText(title); } else if (itemView instanceof BasicItemViewV) { ((BasicItemViewV) itemView).getmTitle().setText(title); } else if (itemView instanceof ImageItemView) { ((ImageItemView) itemView).getmTitle().setText(title); } else if (itemView instanceof CheckItemViewH) { ((CheckItemViewH) itemView).getmTitle().setText(title); } else if (itemView instanceof CheckItemViewV) { ((CheckItemViewV) itemView).getmTitle().setText(title); } } } public void modifySubTitle(String subTitle) { FrameLayout itemView = getItemView(); if (itemView instanceof BasicItemViewH) { ((BasicItemViewH) itemView).getmSubTitle().setText(subTitle); } else if (itemView instanceof BasicItemViewV) { ((BasicItemViewV) itemView).getmSubTitle().setText(subTitle); } else if (itemView instanceof CheckItemViewV) { ((CheckItemViewV) itemView).getmSubTitle().setText(subTitle); } } public void modifyDrawable(Drawable drawable) { FrameLayout itemView = getItemView(); if (itemView instanceof SwitchItemView) { ((SwitchItemView) itemView).getmDrawable().setImageDrawable(drawable); } else { if (itemView instanceof BasicItemViewH) { ((BasicItemViewH) itemView).getmDrawable().setImageDrawable(drawable); } else if (itemView instanceof BasicItemViewV) { ((BasicItemViewV) itemView).getmDrawable().setImageDrawable(drawable); } else if (itemView instanceof ImageItemView) { ((ImageItemView) itemView).getmDrawable().setImageDrawable(drawable); } else if (itemView instanceof CheckItemViewH) { ((CheckItemViewH) itemView).getmDrawable().setImageDrawable(drawable); } else if (itemView instanceof CheckItemViewV) { ((CheckItemViewV) itemView).getmDrawable().setImageDrawable(drawable); } } } public void modifyInfo(Drawable drawable) { FrameLayout itemView = getItemView(); if (itemView instanceof ImageItemView) { ((ImageItemView) itemView).getmImage().setImageDrawable(drawable); } } }