在关于同一主题的其他文章之后,我实现了数组适配器的getView方法。但不幸的是,由于突出显示了该行,该应用程序正在停止,因为如果我将其注释掉,则该应用程序不会崩溃。请帮助出什么事了--
aa = new ArrayAdapter(this,android.R.layout.simple_list_item_1, al) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
***TextView tv = (TextView)findViewById(android.R.id.text1);***
tv.setTextColor(Color.WHITE);
tv.setVisibility(View.VISIBLE);
return view;
}
Logcat-
04-13 04:48:38.246 2870-2870 / com.example.sairav.app3 E / AndroidRuntime致命异常:主进程:com.example.sairav.app3,PID:2870 java.lang.NullPointerException:尝试调用虚拟android.widget.AbsListView上com.example.sairav.app3.MainActivity $ 1.getView(MainActivity.java:41)上的空对象引用上的方法“ android.view.View android.view.View.findViewById(int)”。在android.widget.ListView.fillFromTop(ListView.java)处获得android.widget.ListView.makeAndAddView(ListView.java:1864)在android.widget.ListView.fillDown(ListView.java:698)处的getView(AbsListView.java:2344) :759),位于android.widget.ListView.layoutChildren(ListView.java:1673),位于android.widget.AbsListView.onLayout(AbsListView.java:2148),位于android.view.View.layout(View.java:15596) android.widget.AbsoluteLayout上的.view.ViewGroup.layout(ViewGroup.java:4966)。android.view.ViewGroup.layout(View.java:15596)上的android.view.ViewGroup.layout(ViewGroup.java:4966)上的onLayout(AbsoluteLayout.java:123)android.widget.FrameLayout.layoutChildren(FrameLayout.java) :573)在com.android.view.ViewGroup.layout(ViewGroup.java:4966)在android.view.View.layout(View.java:15596)在android.widget.FrameLayout.onLayout(FrameLayout.java:508) .android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:494)在android.view.View.layout(View.java:15596)在android.view.ViewGroup.layout(ViewGroup.java:4966)在android。 android.widget.FrameLayout.onLayout(FrameLayout.java:508)在android.view.View.layout(View.java:15596)处的widget.FrameLayout.layoutChildren(FrameLayout.java:573)在android.view.ViewGroup.layout处(ViewGroup.java:4966)在android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2072)在Android。android.view.Choreograph上的view.ViewRootImpl.performTraversals(ViewRootImpl.java:1829)在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)在android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:5779)在android.view.Choreograph android.view.Choreographer.do $ CallbackRecord.run(Choreographer.java:767)android.view.Choreographer.doFrame(Choreographer.java:550)android.view.Choreographer $ FrameDisplayEventReceiver。在android.os.Looper.loop(Looper.java)处在android.os.Handler.handleCallback(Handler.java:739)在android.os.Handler.dispatchMessage(Handler.java:95)处运行(Choreographer.java:753) :135),位于android.app.ActivityThread.main(ActivityThread.java:5221),位于java.lang.reflect.Method.invoke(本机方法),位于java.lang.reflect.Method.invoke(Method.java:372) com.android.internal.os.ZygoteInit $ MethodAndArgsCaller。在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)上运行(ZygoteInit.java:899)
需要做什么 ?尝试在空对象引用上调用虚拟方法'android.view.View android.view.View.findViewById(int)'
如果您的convertView
值为null,则需要加载一个新的。
技巧:
aa = new ArrayAdapter(this,android.R.layout.simple_list_item_1, al) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(
R.layout.fragment_home_drawer_listview_item, null);
}
TextView tv = (TextView)convertView.findViewById(android.R.id.text1);
tv.setTextColor(getResources.getColor(Color.WHITE));
tv.setVisibility(View.VISIBLE);
return convertView;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句