我在我的應用程序中有很多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
我想寫乾淨的代碼,就是這樣。有沒有人知道如何在執行程序的某個時刻監視內存中的變量? –