2011年7月24日日曜日

MyButtonPreferenceソース

判りづらいのでソースをそのまま以下に示します。

package hoge;

import android.content.Context;
import android.preference.Preference;
import android.util.AttributeSet;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

public class MyButtonPreference extends Preference {

 public MyButtonPreference(Context context) {
  super(context);
  // TODO 自動生成されたコンストラクター・スタブ
 }

 public MyButtonPreference(Context context, AttributeSet attrs) {
  super(context, attrs);
  // TODO 自動生成されたコンストラクター・スタブ
 }

 public MyButtonPreference(Context context, AttributeSet attrs, int defStyle) {
  super(context, attrs, defStyle);
  // TODO 自動生成されたコンストラクター・スタブ
 }

 private Button mButton;

 private int mTitleResid;
 private int mSummaryResid;
 private int mButtonResid;
 private OnClickListener mClickListener;

 /*
  * 実際にレイアウトが表示されるまで処理されない!
  * @see android.preference.Preference#onCreateView(android.view.ViewGroup)
  */
 @Override
 protected View onCreateView(ViewGroup parent) {
  View view = super.onCreateView(parent);
  ((TextView)view.findViewById(R.id.button_preference_title)).setText(mTitleResid);
  ((TextView)view.findViewById(R.id.button_preference_summary)).setText(mSummaryResid);
  mButton = (Button)view.findViewById(R.id.button_preference_button);
  mButton.setText(mButtonResid);
  mButton.setOnClickListener(mClickListener);
  return view;
 }
 public void setButtonPreference(int title, int summary, int button){
  mTitleResid = title;
  mSummaryResid = summary;
  mButtonResid = button;
 }
 public void setOnClickListener(OnClickListener clickListener){
  mClickListener = clickListener;
  if(mButton != null){
   mButton.setOnClickListener(mClickListener);
  }
 }
}

呼び出す側では

MyButtonPreference preference;
  preference = (MyButtonPreference) getPreferenceScreen().findPreference("hoge1");
  preference.setButtonPreference(R.string.pref_title1, R.string.pref_summ1, R.string.btn_title1);
  preference.setOnClickListener(clickListenerClear);
  preference = (MyButtonPreference) getPreferenceScreen().findPreference("hoge2");
  preference.setButtonPreference(R.string.pref_title2, R.string.pref_summ2, R.string.btn_title2);
  preference.setOnClickListener(clickListenerManage);

てな感じで使用します。

0 件のコメント:

コメントを投稿