gpt4 book ai didi

android - arrayadapter 更改字体时出错

转载 作者:行者123 更新时间:2023-11-30 03:51:51 29 4
gpt4 key购买 nike

我正在尝试修改 MyKong 中的代码,添加一些更改 TextView 字体的行,但是当我尝试运行时遇到强制关闭。

这里是 MobileArrayAdapter.java

> package com.mkyong.android.adaptor;
>
> import com.mkyong.android.R;
>
> import android.content.Context; import
> android.content.res.AssetManager; import android.graphics.Color;
> import android.graphics.Typeface; import android.view.LayoutInflater;
> import android.view.View; import android.view.ViewGroup; import
> android.widget.ArrayAdapter; import android.widget.ImageView; import
> android.widget.TextView;
>
> public class MobileArrayAdapter extends ArrayAdapter<String> {
> private final Context context; private final String[] values;
>
> public MobileArrayAdapter(Context context, String[] values) {
> super(context, R.layout.list_mobile, values); this.context =
> context; this.values = values; }
>
> @Override public View getView(int position, View convertView,
> ViewGroup parent) { LayoutInflater inflater = (LayoutInflater)
> context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View
> rowView = inflater.inflate(R.layout.list_mobile, parent, false);
> TextView textView = (TextView) rowView.findViewById(R.id.label);
> ImageView imageView = (ImageView) rowView.findViewById(R.id.logo);
> // Here starts my modify
> Context context1 = null;
> AssetManager assetManager = context1.getResources().getAssets(); Typeface typeface = Typeface.createFromAsset(assetManager,
> "fonts/principale.ttf"); textView.setTextColor(Color.RED);
> textView.setTypeface(typeface); // Here ends
> textView.setText(values[position]);
>
> // Change icon based on name String s = values[position];
>
> System.out.println(s);
>
> if (s.equals("WindowsMobile")) {
> imageView.setImageResource(R.drawable.windowsmobile_logo); } else
> if (s.equals("iOS")) {
> imageView.setImageResource(R.drawable.ios_logo); } else if
> (s.equals("Blackberry")) {
> imageView.setImageResource(R.drawable.blackberry_logo); } else {
> imageView.setImageResource(R.drawable.android_logo); }
>
> return rowView; } }

这里列出MobileActivity.java

package com.mkyong.android;

import com.mkyong.android.adaptor.MobileArrayAdapter;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.view.View;

public class ListMobileActivity extends ListActivity {

static final String[] MOBILE_OS = new String[] { "Android", "iOS",
"WindowsMobile", "Blackberry"};

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);


setListAdapter(new MobileArrayAdapter(this, MOBILE_OS));
}
}

这里是 list_mobile.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp" >

<ImageView
android:id="@+id/logo"
android:layout_width="50px"
android:layout_height="50px"
android:layout_marginLeft="5px"
android:layout_marginRight="20px"
android:layout_marginTop="5px"
android:src="@drawable/windowsmobile_logo" >
</ImageView>

<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/label"
android:textSize="30px" >
</TextView>

</LinearLayout>

现在,我知道我问了很多,但我该如何解决呢?从自定义适配器更改字体的正确方法是什么?感谢您的回复。

最佳答案

MobileArrayAdapter 类 getView 方法中,您使用 null 上下文来访问 AssetManager,因此更改

Context context1 = null; 

Context context1 = context;

关于android - arrayadapter 更改字体时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14032590/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com