簡體   English   中英

如何使用適配器將自定義字體設置為ListView項中的TextView之一?

[英]how to set custom font to one of the TextView's in ListView item using adapters?

如何使用適配器將自定義字體設置為ListView項中的TextView之一?

我使用了這段代碼,但是在getView方法中遇到了運行時異常。

import java.util.ArrayList;

import java.util.HashMap;

import android.view.ViewGroup;

import com.hands.daily.duas.database.MyDbClass;

import android.app.Activity;

import android.content.Context;

import android.graphics.Typeface;

import android.view.LayoutInflater;

import android.view.View;

import android.widget.BaseAdapter;

import android.widget.TextView;

public class LazyAdapter extends BaseAdapter {

    static int i=11;

    private Activity activity;

    public ArrayList<HashMap<String, String>> data;

    private static LayoutInflater inflater=null;

    First fst=new First();

  //  public ImageLoader imageLoader;

    String urlString="";

   MyDbClass mdbclass;

    public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> list) {

         data=new ArrayList<HashMap<String, String>>();

        activity = a;

        data=list;

        inflater=(LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    //  imageLoader=new ImageLoader(activity.getApplicationContext());

    }
    public int getCount() {

        return data.size();

    }

    public Object getItem(int position) {

        return position;

    }

    public long getItemId(int position) {

        return position;

    }

    public View getView(int position, View convertView, ViewGroup parent) {

        View vi=convertView;

        if(convertView==null)

            vi = inflater.inflate(R.layout.duas_rowlist, null);

        TextView duatv = (TextView)vi.findViewById(R.id.textView1); // duatv

        Typeface tf = Typeface.createFromAsset(convertView.getContext().getAssets(),"fonts/Molot.otf");

        duatv.setTypeface(tf);

        HashMap<String, String> song = new HashMap<String, String>();

        song = data.get(position);

        // Setting all values in listview

       // String eventName1=song.get(First.Duas).toString();

        duatv.setTextSize(i);

     duatv.setText(song.get(First.Duas));

        return vi;

    }

}
        Typeface tf = Typeface.createFromAsset(convertView.getContext().getAssets(), "fonts/Molot.otf");

那可能就是原因。 即使適配器中有convertview,也不應從convertview中獲取上下文。 這類事情屬於適配器的構造函數,它采用傳遞過來的活動的上下文。我也重新格式化了構造函數。

public ArrayList<HashMap<String, String>> data;
private LayoutInflater inflater;
private Typeface tf;

public LazyAdapter(Context context, ArrayList<HashMap<String, String>> data) {
    this.data = data;
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    tf = Typeface.createFromAsset(context.getAssets(), "fonts/Molot.otf");
    // imageLoader=new ImageLoader(context);
}

......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM