非常简单的问题:
我正在夸大观点:
final View dialogView = inflater.inflate(R.layout.dialog_location, null);
final EditText location_input = (EditText) dialogView.findViewById(R.id.location_input);
final View location_button_clear = dialogView.findViewById(R.id.location_button_clear);
final Button current_location_dialog = (Button) dialogView.findViewById ( R.id.current_location_dialog );
我后来将很多听众传递给每个儿童观点,例如
location_button_clear.setOnClickListener(new View.OnClickListener() { ... }
current_location_dialog.setOnClickListener(new View.OnClickListener() { ... }
location_input.addTextChangedListener(new TextWatcher() { ... }
这使我的代码成为一个spageti,我不喜欢它。出于可维护性的原因,我想创建一个新的单独的类,在该文件中包含监听器等。
是否可以将dialogView扩展为视图?例如
public class DialogView extends View{
// somehow here inflate the R.layout.dialog_location
// get the children and set the listeners
}
或我唯一的选择是将DialogView扩展为Fragment
,例如
public class DialogView extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.dialog_location, container, false);
}
// other stuff here
}
更新:
我的主要问题是如果我扩展视图
,如何夸大R.layout.dialog_location
答案 0 :(得分:0)
您可以完美展开View
,因为您的原始展示dialogView
类型为View
。但是,由于您没有指定计划如何组织它,我不确定这将如何提高您的代码可读性。
为了可维护性的原因,我最好提出以下建议:
如果您对多个Listener
使用相同的View
,请单独定义并为所有Listener
分配相同的View
这将具有相同的行为。
如果您真的有很多Listener
,我会创建一个单独的类作为Singleton并在那里定义整个实现。之后,如果您需要将其分配给某些View
,则可以在mySingleton.getMyFooListener()
上拨打myView.setOnWhateverListener(...)
之类的内容。