【发布时间】: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