我不完全确定这是正确的SE问这个,但我想知道在开发Android时是否预期。我最终得到一个更大的包含类,然后是回调中回调的大量嵌套/新建匿名类。我想知道这是否是预期的,或者是否有更好的方法,因为嵌套类的数量开始导致非常复杂的代码。
这只是一个对话框片段,上面有一些设置。单击某个设置时,它会使用适当的选项填充列表视图,当您选择一个选项时,它会更新您单击的值。它是一个DialogFragment,带有嵌套的匿名OnClickListener(),然后将嵌套的匿名OnItemClickListener()分配给ListView类型的对象。这允许我使用ListView对象进行多个设置,不得不为每个设置复制ListView(我只是将新的适配器和OnItemClickListener绑定到它)。
class MyDialogFragment extends DialogFragment
{
protected View _root;
protected ListView _listViewSomeSettingOptions;
protected TextView _textViewSomeSetting;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
_root = inflater.inflate(R.layout.layout_for_dialog, container, false);
_listViewSomeSettingOptions = (ListView)_root.FindViewById(R.id.listViewSettingOptions);
_textViewSomeSetting.setOnClickListener(new OnClickListener()
{
protected ArrayList<String> _someSettingOptions = new ArrayList<String>();
// Fill _someSettingOptions with a list of options
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, _someSettingOptions);
_listViewSomeSettingOptions.setAdapter(adapter);
_listViewSomeSettingOptions.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
_textViewSomeSetting.setText(_someSettingOptions.get(position));
}
}
}
}
}
这是怎么回事?我应该制作实现侦听器而不是使用匿名控件的自定义控件吗?这个DialogFragment接近1000行onCreateView现在处理不同的选项并显示用户调整设置选项的更新,它只是刺痛我的&#34;也许这不是最好的设计&#34;感。我想除了Upkeep之外,我想知道这种开发形式是否存在缺陷。