我有一个listview适配器,不允许我使用自己的xml文件,drawables或Id。它只允许我使用adk中的内容,如
android.R.id.text1
但我希望能够使用此
R.id.myOWNtext
这是适配器
mDrawerListView.setAdapter(new ArrayAdapter<String>(getActionBar().getThemedContext(),
android.R.layout.activity_list_item, android.R.id.text1,
new String[]{
getString(R.string.title_section1),
getString(R.string.title_section2),
getString(R.string.title_section3),
getString(R.string.title_section4),
getString(R.string.title_section5),
}));
这对我很好但是当我尝试编辑这个文件android.R.layout.activity_list_item,或任何其他一个没有发生。我甚至删除了activity_list_item文件中的所有内容,但仍然表现得好像没有进行任何更改。
当我在适配器中使用我自己的东西时,我得到以下错误:
04-10 17:08:24.670: E/AndroidRuntime(30940): FATAL EXCEPTION: main
04-10 17:08:24.670: E/AndroidRuntime(30940): java.lang.NullPointerException
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:353)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.widget.AbsListView.obtainView(AbsListView.java:1636)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.widget.ListView.makeAndAddView(ListView.java:1772)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.widget.ListView.fillDown(ListView.java:695)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.widget.ListView.fillFromTop(ListView.java:752)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.widget.ListView.layoutChildren(ListView.java:1609)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.widget.AbsListView.onLayout(AbsListView.java:1466)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.view.View.layout(View.java:7375)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.view.View.layout(View.java:7375)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:714)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.view.View.layout(View.java:7375)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.view.View.layout(View.java:7375)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.view.View.layout(View.java:7375)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.view.View.layout(View.java:7375)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.view.View.layout(View.java:7375)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.view.ViewRoot.performTraversals(ViewRoot.java:1158)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.view.ViewRoot.handleMessage(ViewRoot.java:1878)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.os.Handler.dispatchMessage(Handler.java:99)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.os.Looper.loop(Looper.java:130)
04-10 17:08:24.670: E/AndroidRuntime(30940): at android.app.ActivityThread.main(ActivityThread.java:3691)
04-10 17:08:24.670: E/AndroidRuntime(30940): at java.lang.reflect.Method.invokeNative(Native Method)
04-10 17:08:24.670: E/AndroidRuntime(30940): at java.lang.reflect.Method.invoke(Method.java:507)
04-10 17:08:24.670: E/AndroidRuntime(30940): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
04-10 17:08:24.670: E/AndroidRuntime(30940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670)
04-10 17:08:24.670: E/AndroidRuntime(30940): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:0)
android.R.layout.activity_list_item是属于Android系统的布局,而不是允许您更改的布局。如果想要更改某些内容,则需要创建(并在调用ArrayAdapter构造函数时使用)自己的布局文件。
答案 1 :(得分:0)
通常,当您的xml文件未正确保存或者某些问题可能存在问题时,会发生这种情况,因为它不允许您从R.java文件中获取IDz。
答案 2 :(得分:0)
实例化适配器的方式意味着:
有意义的是你正在改变布局而没有任何反应,因为你传递的布局(android.R.layout.activity_list_item)存在于SDK中。你不能改变它,你需要创建一个新的布局。
当您尝试使用新布局并获得NullPointerException时,可能是因为布局没有与您在适配器的构造函数中传递的ID相同的TextView。
因此,我需要为您需要的每个项目设置自定义布局: