扩展对象类并直接管理事件是一个很好的实践?

时间:2016-05-20 09:03:43

标签: java android class object optimization

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

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类更易于阅读和管理。我知道这是否是一个很好的实践..谢谢

1 个答案:

答案 0 :(得分:0)

按钮是一个视图;不要用它作为控制器或型号〜 在你的代码中,你让按钮做了太多工作〜 没有人像这样使用它。

相关问题