Android: 代码重构建议
Android: code refactoring advice
我正在创建一种待办事项列表应用程序。这是一个有 7 个屏幕的应用程序,用于设置目标并完成目标。屏幕截图 here。现在在编码时我意识到代码中有很多冗余,例如:
1> 对于一周中的 7 天,我需要创建 7 个片段,然后我需要对所有 7 个片段执行完全相同的操作。我能做到吗w/o 7 个片段?
2> 现在有 15 个复选框和 15 个 textview - 我需要获得一个参考,然后分别对每个执行 onclick 操作,并在用户尝试修改它们时对每个执行 settext 和 gettext。
这里是textview修改代码之一:
ptext2 = (TextView) view.findViewById(R.id.p_textview2);
ptext2.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity());
alertDialog.setTitle("Target");
alertDialog.setMessage("Set your target");
final EditText input = new EditText(getActivity());
alertDialog.setView(input);
alertDialog.setPositiveButton("Set", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String targetInp = input.getText().toString();
ptext2.setText(targetInp);
p2 = ptext2.getText().toString();
addEventsToDB();
}
});
alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
alertDialog.show();
return true;
}
});
类似地,textview 还有 15 个,然后是复选框,我需要对所有 7 个片段执行此操作。
Here is my full code of one of the fragment
由于此类应用程序是大多数用户学习android开发的第一个应用程序,应该如何改进此代码?
编辑:
对于多个按钮的 onclick 侦听器,我正在创建一个内部 class,然后使用 switch 进行特定于按钮的操作。
switch(view.getId()){
case R.id.id1:
//do something
break;
.....
}
来自 this SO answer。现在我只需要弄清楚7个片段怎么办(1个片段能搞定吗?)
如何将 View.OnLongClickListener
class 的实现命名为:
class OnDayClickListener extends View.OnLongClickListener {
@Override
public boolean onLongClick(final View view) {
// here use view instead of ptext2
}
}
然后使用
ptext2.setOnLongClickListener(new OnDayClickListener());
// this repeats for every textbox
我正在创建一种待办事项列表应用程序。这是一个有 7 个屏幕的应用程序,用于设置目标并完成目标。屏幕截图 here。现在在编码时我意识到代码中有很多冗余,例如:
1> 对于一周中的 7 天,我需要创建 7 个片段,然后我需要对所有 7 个片段执行完全相同的操作。我能做到吗w/o 7 个片段?
2> 现在有 15 个复选框和 15 个 textview - 我需要获得一个参考,然后分别对每个执行 onclick 操作,并在用户尝试修改它们时对每个执行 settext 和 gettext。
这里是textview修改代码之一:
ptext2 = (TextView) view.findViewById(R.id.p_textview2);
ptext2.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity());
alertDialog.setTitle("Target");
alertDialog.setMessage("Set your target");
final EditText input = new EditText(getActivity());
alertDialog.setView(input);
alertDialog.setPositiveButton("Set", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String targetInp = input.getText().toString();
ptext2.setText(targetInp);
p2 = ptext2.getText().toString();
addEventsToDB();
}
});
alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
alertDialog.show();
return true;
}
});
类似地,textview 还有 15 个,然后是复选框,我需要对所有 7 个片段执行此操作。 Here is my full code of one of the fragment
由于此类应用程序是大多数用户学习android开发的第一个应用程序,应该如何改进此代码?
编辑: 对于多个按钮的 onclick 侦听器,我正在创建一个内部 class,然后使用 switch 进行特定于按钮的操作。
switch(view.getId()){
case R.id.id1:
//do something
break;
.....
}
来自 this SO answer。现在我只需要弄清楚7个片段怎么办(1个片段能搞定吗?)
如何将 View.OnLongClickListener
class 的实现命名为:
class OnDayClickListener extends View.OnLongClickListener {
@Override
public boolean onLongClick(final View view) {
// here use view instead of ptext2
}
}
然后使用
ptext2.setOnLongClickListener(new OnDayClickListener());
// this repeats for every textbox