我在我的应用程序中有很多ListActivity
类,它们的作用几乎相同:左侧为属性(TextView
),右侧为值(Button
)。当我按下按钮时,我想创建一个对话框。因为repetability的,我决定创建一个一般习惯ArrayAdapter
这样的:如何删除自定义侦听器?
public class GeneralTvBtnAdapter extends ArrayAdapter<SettingsProperty> {
private Context mContext;
private ArrayList<SettingsProperty> mProps;
private int mLayout;
private ButtonListener mListener;
public GeneralTvBtnAdapter(Context context, int tv_btn_layout, ArrayList<SettingsProperty> objects, ButtonListener listener) {
super(context, tv_btn_layout, objects);
mContext = context;
mProps = objects;
mLayout = tv_btn_layout;
mListener = listener;
}
public void updateValue (int position, String newValue) {
mProps.get(position).setValue(newValue);
notifyDataSetChanged();
}
private class ViewHolder {
TextView mName;
Button mValue;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
LayoutInflater mInflater = LayoutInflater.from(mContext);
convertView = mInflater.inflate(mLayout, null);
holder.mName = (TextView) convertView.findViewById(R.id.prop);
holder.mValue = (Button) convertView.findViewById(R.id.value);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.mName.setText(mProps.get(position).getName());
holder.mValue.setText(mProps.get(position).getValue());
holder.mValue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mListener.onButtonClicked(position);
}
});
return convertView;
}
public interface ButtonListener {
void onButtonClicked (int position);
}
}
我想知道我怎么能删除ButtonListeners听众调用活性被破坏后。
P.S:SettingsProperty是POJO与字符串名称和String
值和tv_btn_layout是具有TextView
的布局和上述一个Button
如。
问题是什么.. –
据我所知,Android将自动删除所有监听器当活动被破坏。 – Sybregunne
我想写干净的代码,就是这样。有没有人知道如何在执行程序的某个时刻监视内存中的变量? –