package com.litesuits.orm.samples; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.ScrollView; import android.widget.TextView; import com.litesuits.orm.log.OrmLog; /** * 动态添加按钮和点击事件 * * @author MaTianyu * 2014-2-25下午2:36:30 */ public abstract class BaseActivity extends Activity implements OnClickListener { protected String TAG = "BaseActivity"; private TextView mTvSubTitle; public LinearLayout container; public ScrollView scroll; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act_list_btn); TAG = this.getClass().getSimpleName(); OrmLog.setTag(TAG); container = (LinearLayout) findViewById(R.id.container); scroll = (ScrollView) container.getParent(); TextView tv = (TextView) container.findViewById(R.id.title); tv.setText(getMainTitle()); mTvSubTitle = (TextView) container.findViewById(R.id.sub_title); String[] bttxt = getButtonTexts(); if (bttxt != null) { for (int i = 0; i < bttxt.length; i++) { Button bt = new Button(this); LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); int margin = getResources().getDimensionPixelSize(R.dimen.common_marin); lp.setMargins(margin, margin, margin, margin); bt.setId(i); bt.setText(bttxt[i]); bt.setOnClickListener(this); bt.setLayoutParams(lp); container.addView(bt); } } } /** * 获取主标题 */ public abstract String getMainTitle(); /** * 设置二级标题 */ public void setSubTitile(String st) { mTvSubTitle.setText(st); } /** * 取button列表 */ public abstract String[] getButtonTexts(); /** * 在{@link #onClick(View)} 里调用。 * id值得含义为:若{@link #getButtonTexts()}的string[]数组长度为len,则id从0,1,2到len-1. * 点击第N个按钮,id变为N。 */ public abstract Runnable getButtonClickRunnable(final int id); @Override public void onClick(View v) { Runnable r = getButtonClickRunnable(v.getId()); if (r != null) { new Thread(r).start(); } } }