我正在编写ListAdapter的自定义实现.
在它的构造函数中,我接受一个Context,一个资源ID(即代表布局文件的R.id.xxx),一个列表和一个map(这些包含数据).
现在,问题是我需要一个LayoutInflater来获取View对象,该对象位于单独的布局XML文件中.
如果只给出Context,我怎样才能获得LayoutInflater?
现在,为什么我认为这是可能的,这与传递给ArrayAdapter的构造函数(context,resource,textViewResourceId,data array)非常相似,我认为ArrayAdapter也必须使用LayoutInflater只给出了一个Context.
但怎么办呢?
简单的"不"回答会使我平静下来.如果有什么不同那么它是什么?
我正在尝试使用Builder并设置自定义视图来创建AlertDialog.当我尝试给onCreateDialog里面的视图充气时,我得到一个StackOverflowError ..
这是代码,直到它循环回onCreateDialog:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.enter_time);
LinearLayout outerLayout = (LinearLayout) getLayoutInflater(savedInstanceState)
.inflate(R.layout.time_entry_dialog, null);
...
}
Run Code Online (Sandbox Code Playgroud)
这是LogCat输出:
02-28 22:30:04.220: E/AndroidRuntime(4250): FATAL EXCEPTION: main
02-28 22:30:04.220: E/AndroidRuntime(4250): java.lang.StackOverflowError
02-28 22:30:04.220: E/AndroidRuntime(4250): at android.app.Activity.getSystemService(Activity.java:4009)
02-28 22:30:04.220: E/AndroidRuntime(4250): at android.view.LayoutInflater.from(LayoutInflater.java:210)
02-28 22:30:04.220: E/AndroidRuntime(4250): at android.view.ContextThemeWrapper.getSystemService(ContextThemeWrapper.java:75)
02-28 22:30:04.220: E/AndroidRuntime(4250): at com.android.internal.app.AlertController$AlertParams.<init>(AlertController.java:812)
02-28 22:30:04.220: E/AndroidRuntime(4250): at android.app.AlertDialog$Builder.<init>(AlertDialog.java:374)
02-28 22:30:04.220: E/AndroidRuntime(4250): at android.app.AlertDialog$Builder.<init>(AlertDialog.java:359)
02-28 22:30:04.220: E/AndroidRuntime(4250): at com.sweatyreptile.chee.runtimetracker.TimeEntryDialogFragment.onCreateDialog(TimeEntryDialogFragment.java:18)
02-28 22:30:04.220: E/AndroidRuntime(4250): at android.support.v4.app.DialogFragment.getLayoutInflater(DialogFragment.java:295)
02-28 22:30:04.220: E/AndroidRuntime(4250): at com.sweatyreptile.chee.runtimetracker.TimeEntryDialogFragment.onCreateDialog(TimeEntryDialogFragment.java:21)
02-28 …Run Code Online (Sandbox Code Playgroud)