【问题标题】:Extend Object Class and manage directly the events is a good pratice?扩展对象类并直接管理事件是一个好习惯吗?
【发布时间】:2016-05-20 09:03:43
【问题描述】:

在我的项目中,我扩展了一些类,例如按钮类,并在扩展类中管理了一些事件。代码如下:

public class MySpecificButton extends Button{
public MySpecificButton(Context context) {
    super(context);
    onButtonClick();
}

public MySpecificButton(Context context, AttributeSet attrs) {
    super(context, attrs);
    onButtonClick();
}

public MySpecificButton(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    onButtonClick();
}

public void onButtonClick() {
    this.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Context context = getContext();
            LayoutInflater factory = LayoutInflater.from(context);
            final View addGameDialogView = factory.inflate(R.layout.dialog_add_console, null);
            final AlertDialog addGameDialog = new AlertDialog.Builder(context).create();

            addGameDialog.setView(addGameDialogView);
            ListView listView = (ListView)addGameDialogView.findViewById(R.id.lstView_AllConsole);
            String[] arrayList = {"Playstation 1", "Playstation 2","Playstation 3", "Playstation 4","Playstation Portable", "Playstation Vita","Xbox", "Xbox 360","Xbox One", "Wii","Wii U", "Ds","3DS"
                    , "Skyrim"};
            ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, arrayList);
            listView.setAdapter(arrayAdapter);

            addGameDialogView.findViewById(R.id.btn_closeAddConsole).setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    addGameDialog.dismiss();
                }
            });
            addGameDialog.show();
        }
    });
}
}

并且在 XML 文件中添加了这个:

<mygames.mygamesapp.eu.myapplication.ExtendedClasses.MySpecificButton
    android:layout_width="42dp"
    android:layout_height="42dp"
    android:id="@+id/btn_addConsole"
    android:layout_gravity="center_horizontal"
    android:background="@drawable/ic_add_circle_outline_black_24dp" />

我只对需要大量代码的对象执行此操作,以便 MainActivity 类更易于阅读和管理。我会知道这是否是一个好的做法.. 谢谢

【问题讨论】:

  • 这是如何工作的?似乎onButtonClick() 设置了监听器,但从不触发它。
  • 有效,用构造函数调用

标签: java android class object optimization


【解决方案1】:

按钮是一个视图;请勿将其用作控制器或模型〜 在你的代码中,你让按钮做太多的工作~ 没有人像这样使用它。

【讨论】:

    猜你喜欢
    • 2014-12-22
    • 2020-02-06
    • 2017-06-14
    • 2011-09-04
    • 1970-01-01
    • 2014-03-09
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多