Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android自定义列表视图中设置字体_Android_Android Listview_Typeface - Fatal编程技术网

在Android自定义列表视图中设置字体

在Android自定义列表视图中设置字体,android,android-listview,typeface,Android,Android Listview,Typeface,我使用自定义布局来显示我的ListView项目。 但当我试图在运行时设置字体时,应用程序崩溃了。 首先,我试图访问onCreate中布局的TexView。。。看到它不起作用,我在网上寻找答案,发现我应该在自定义适配器中进行设置。我也试过了,同样的结果 我的适配器如下所示: public class VizitaAdapter extends ArrayAdapter<Vizita>{ Context context; int layoutResourceId;

我使用自定义布局来显示我的ListView项目。 但当我试图在运行时设置字体时,应用程序崩溃了。 首先,我试图访问onCreate中布局的TexView。。。看到它不起作用,我在网上寻找答案,发现我应该在自定义适配器中进行设置。我也试过了,同样的结果

我的适配器如下所示:

public class VizitaAdapter extends ArrayAdapter<Vizita>{
    Context context;
    int layoutResourceId;   
    Typeface fontux = null;

  public VizitaAdapter(Context context, int layoutResourceId, Vizita[] data) {
        super(context, layoutResourceId, data);
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = data;
        fontux = Typeface.createFromAsset(context.getAssets(), "fonts/myrprocond.otf"); 
    }


 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        WeatherHolder holder = null;
 ...
 ...
        ((TextView)row).setTypeface(fontux);
        return row;
 }
公共类VizitaAdapter扩展了ArrayAdapter{
语境;
国际布局资源;
字体fontux=null;
公共VizitaAdapter(上下文上下文、int-layoutResourceId、Vizita[]数据){
超级(上下文、布局资源ID、数据);
this.layoutResourceId=layoutResourceId;
this.context=上下文;
这个数据=数据;
fontux=Typeface.createFromAsset(context.getAssets(),“font/myrprocond.otf”);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
WeatherHolder=null;
...
...
((TextView)行)。设置字体(fontux);
返回行;
}
因此,当我的活动开始时,我会收到一条错误消息,导致应用程序崩溃。在此之前,应用程序运行良好。 我做错了什么? 我应该能够为不同的字体设置不同的文本视图。这实际上是我所需要的。但我甚至不能同时设置所有文本视图

请帮忙。 多谢各位

更新 原木在下面

08-01 16:57:22.727:D/szipinf(881):初始化充气状态
08-01 16:57:22.787:D/AndroidRuntime(881):关闭虚拟机
08-01 16:57:22.787:W/dalvikvm(881):threadid=1:线程以未捕获异常退出(组=0x40015560)
08-01 16:57:22.797:E/AndroidRuntime(881):致命异常:主
08-01 16:57:22.797:E/AndroidRuntime(881):java.lang.ClassCastException:android.widget.RelativeLayout
08-01 16:57:22.797:E/AndroidRuntime(881):在softwarex.sscommonitor_custom.VizitaAdapter.getView(VizitaAdapter.java:50)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:220)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.widget.AbsListView.obtainView(AbsListView.java:1430)
08-01 16:57:22.797:E/AndroidRuntime(881):位于android.widget.ListView.makeAndAddView(ListView.java:1745)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.widget.ListView.fillDown(ListView.java:670)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.widget.ListView.fillFromTop(ListView.java:727)
08-01 16:57:22.797:E/AndroidRuntime(881):位于android.widget.ListView.layoutChildren(ListView.java:1598)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.widget.AbsListView.onLayout(AbsListView.java:1260)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.view.view.layout(view.java:7175)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.widget.RelativeLayout.onLayout(RelativeLayout.java:912)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.view.view.layout(view.java:7175)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.widget.FrameLayout.onLayout(FrameLayout.java:338)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.view.view.layout(view.java:7175)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.view.view.layout(view.java:7175)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.widget.FrameLayout.onLayout(FrameLayout.java:338)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.view.view.layout(view.java:7175)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.view.ViewRoot.performTraversals(ViewRoot.java:1140)上
08-01 16:57:22.797:E/AndroidRuntime(881):在android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
08-01 16:57:22.797:E/AndroidRuntime(881):位于android.os.Handler.dispatchMessage(Handler.java:99)
08-01 16:57:22.797:E/AndroidRuntime(881):在android.os.Looper.loop(Looper.java:123)上
08-01 16:57:22.797:E/AndroidRuntime(881):位于android.app.ActivityThread.main(ActivityThread.java:3683)
08-01 16:57:22.797:E/AndroidRuntime(881):位于java.lang.reflect.Method.Invokenactive(本机方法)
08-01 16:57:22.797:E/AndroidRuntime(881):位于java.lang.reflect.Method.invoke(Method.java:507)
08-01 16:57:22.797:E/AndroidRuntime(881):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-01 16:57:22.797:E/AndroidRuntime(881):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-01 16:57:22.797:E/AndroidRuntime(881):在dalvik.system.NativeStart.main(本机方法)
08-01 16:57:24.657:I/进程(881):发送信号。PID:881 SIG:9

我不知道如何格式化日志以使其更具可读性:(

另外,我更改了上面的代码以反映最新的尝试(这也给了我这个错误)

请附上日志。 这一行很可能有
NullPointerException

Typeface face=Typeface.createFromAsset(getAssets(), "fonts/yourfont.ttf"); 
((TextView)row).setTypeface(face);
convertView
可能是
null
,在这种情况下,您应该创建一个新的,或者调用super class()的方法
getView

请附加日志。 这一行很可能有
NullPointerException

Typeface face=Typeface.createFromAsset(getAssets(), "fonts/yourfont.ttf"); 
((TextView)row).setTypeface(face);

convertView
可能是
null
,在这种情况下,您应该创建一个新的,或者调用super class()的方法
getView

我建议对适配器使用这种样式。使用holder并检查convertView是否为null:VizitaAdapter.java中的50行是多少?此行:((TextView)行)。setTypeface(fontux);似乎
的类型是
RelativeLayout
,不能将其强制转换为
TextView
。如果是这样,您应该使用
findViewById
来获取TextVie