我正在开发一个Android项目,我正在创建一个自定义列表视图 . 列表视图包含多个文本视图,我正在为我的文本视图创建一个样式,所以我不必一遍又一遍地复制相同的样式 .
下面是我的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/txtFirstOccurred"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
style="@style/CrashGroup"/>
<TextView android:id="@+id/txtLastOccurred"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
style="@style/CrashGroup"/>
</LinearLayout>
以下是我的textview样式
<style name="CrashGroup">
<item name="android:singleLine">false</item>
<item name="android:textSize">@android:style/TextAppearance.Small</item>
<item name="android:gravity">center_vertical</item>
</style>
下面是我如何膨胀我的XML以显示在我的列表视图上 .
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
try
{
convertView = LayoutInflater.from(getContext()).inflate(R.layout.android_crash_group_layout, null);
TextView txtFirstOccurred = (TextView)convertView.findViewById(R.id.txtFirstOccurred);
txtFirstOccurred.setText(getItem(position).getFirstOccurred());
TextView txtLastOccurred = (TextView)convertView.findViewById(R.id.txtLastOccurred);
txtLastOccurred.setText(getItem(position).getLastOccurred());
return convertView;
}
catch (Exception ex)
{
Log.e(TAG, ex.toString());
return null;
}
}
我得到的错误是:
进程:com.BoardiesITSolutions.CritiMonApp,PID:1451 java.lang.NullPointerException:尝试在android.widget.AbsListView.obtainView(AbsListView)上的空对象引用上调用虚方法'int android.view.View.getImportantForAccessibility()' .java:2360)在android.widget.List.fillFromTop(ListView.java:759)的android.widget.ListView.fillDown(ListView.java:698)的android.widget.ListView.makeAndAddView(ListView.java:1864)在android.view上的android.widget.AtListView.onLayout(AbsListView.java:2148)的android.widget.List.layoutChildren(ListView.java:1673)处于android.view上的android.view.View.layout(View.java:15596) . 位于android.widget.LinearLayout.onLayout(LinearLayout)的android.widget.LinearLayout.setoutVertical(LinearLayout.java:1557)上的android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)中的ViewGroup.layout(ViewGroup.java:4966) .java:1466)在Android.widget.LinearLayout的android.view.View.layout(ViewGroup.java:4966)的android.view.View.layout(View.java:15596) . setChildFrame(LinearLayout.java:1703)位于Android.widget.Line中的android.widget.LinearLayout.onoutVayical(LinearLayout.java:1557),android.view.Layout.Layout.Layout :15596)在Android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)的android.view.FreeLayout.onLayout(FrameLayout.java:508)android.view.ViewGroup.layout(ViewGroup.java:4966)位于android.widget.FoutLayout的android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)的android.view.ViewGroup.layout(ViewGroup.java:4966)的.view.View.layout(View.java:15596) . onLayout(FrameLayout.java:508)在android.view.Viewout.Loutout.setChildFrame(LinearLayout.java :1703)在android.widget.LinearLayout.onoutVertical(LinearLayout.java:1557)的android.widget.LinearLayout.onLayout(LinearLayout.java:1466)在android.view.View.layout(View.java:15596)在android .view.ViewGroup.l ayout(ViewGroup.java:4966)位于android.view.ViewGroup.layout的android.view.View.layout(View.java:15596)的android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:890) (ViewGroup.java:4966)android.widget.FrameLayout.layout中的android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)(androidLayout.java:508)在android.view.View.layout(View.java: 15596)在Android.widget.FrameLayout.onLayout(FrameLayout.java:508)的android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)上的android.view.ViewGroup.layout(ViewGroup.java:4966) . 在Android.widget.FrameLayout.onLayout的android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)的android.view.ViewGroup.layout(ViewGroup.java:4966)上的view.View.layout(View.java:15596) (FrameLayout.java:508)在android.view.Loutout.setChildFrame(androidLayout.java)上的android.view.View.layout(ViewGroup.java:4966)的android.view.View.layout(View.java:15596)处 . (LinearLayout.java: 1703)在android.widget.LinearLayout.layoutVertical(Line arLayout.java:1557)在Android.view.Loutout(DirectLayout.java:1466)的android.view.View.layout(View.java:15596)android.view.ViewGroup.layout(ViewGroup.java:4966)上的android.widget.LinearLayout.onLayout(LinearLayout.java:1466) )android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)在android.view.fallLayout.onLayout(FrameLayout.java:508)android.view.layout(View.java:15596)android.view .ViewGroup.layout(ViewGroup.java:4966)位于android.view.ViewRootImpl.adTraversals(ViewRootImpl.java:182)上的android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2072),位于android.view.ViewRootImpl.doTraversal( ViewRootImpl.java:1054)在Android.view.ChoreIs上运行android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:5779)在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:767),在android.view.Choreographer.doCallbacks(Choreographer) .java:580)在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:753)的android.view.Choreographer.doFrame(Choreographer.java:550)
这似乎与样式有关,好像我从文本视图中删除了这个样式属性似乎工作正常 .
感谢您的任何帮助,您可以提供 .
2 回答
我认为你回来的
convertView
有时是null
,因为处理convertView很棘手 .确保你有 Value . 你可以使用像:
希望能帮助到你 .
android:textSize必须是维度值所以改变你的风格,