0

ListMenuAdapter内部にクラスがあります:

ListMenuAdapter adapter = new ListMenuAdapter(this, R.layout.listmenu_item, listMenuData);

問題は次のとおりです。からテキストビューにアクセスできませんR.layout.listmenu_item。書体を変更したいので、アクセスする必要があります。

これは完全なコードです:

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    ListMenu listMenuData[] = new ListMenu[]
    {
        new ListMenu(R.drawable.final_test, "Hello World ^_^", getHighScore(1)),
        new ListMenu(R.drawable.introduction, "Introduction", getHighScore(1)),
        new ListMenu(R.drawable.input_output, "Input - Output", getHighScore(2))
    };


    ListMenuAdapter adapter = new ListMenuAdapter(this, R.layout.listmenu_item, listMenuData);

    listMenu = (ListView)findViewById(R.id.listMenu);

    View header = (View)getLayoutInflater().inflate(R.layout.listmenu_header, null);
    //I TRIED THIS FOR ACCESSING THE TEXTVIEW, BUT NO LUCK
    View titles = (View)getLayoutInflater().inflate(R.layout.listmenu_item, null);

    Typeface customFont = Typeface.createFromAsset(this.getAssets(), "Androgyne_TB.otf");

    //WORKING
    txtHeader = (TextView)header.findViewById(R.id.txtHeader);
    //NOT WORKING
    txtTitle = (TextView) titles.findViewById(R.id.txtTitle);

    //WORKING    
    txtHeader.setTypeface(customFont);
    //NOT WORKING
    txtTitle.setTypeface(customFont);

    listMenu.addHeaderView(header);

    listMenu.setAdapter(adapter);
    listMenu.setOnItemClickListener(this);
}

R.layout.listmenu_itemTextview にアクセスするために を膨らませようとしました:

View titles = (View)getLayoutInflater().inflate(R.layout.listmenu_item, null);

しかし、まだ機能していません (上記の完全なコードを参照してください) :D

編集:

これはListMenuAdapter GetViewメソッドです:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    View row = convertView;
    MenuHolder holder = null;

    if(row == null)
    {
        LayoutInflater inflater = ((Activity)context).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, parent, false);

        holder = new MenuHolder();
        holder.imgMenuIcon = (ImageView)row.findViewById(R.id.imgMenuIcon);
        holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
        //holder.txtHighScore = (TextView)row.findViewById(R.id.txtHighScore);

        //holder.txtHighScore.setTextColor(Color.RED);
        holder.rtbHighScore = (RatingBar) row.findViewById(R.id.rtbHighScore);
        //holder.rtbHighScore.setNumStars(5);
        //holder.rtbHighScore.setEnabled(false);

        row.setTag(holder);
    }
    else holder = (MenuHolder)row.getTag();

    ListMenu menu = listmenu[position];
    holder.imgMenuIcon.setImageResource(menu.icon);
    holder.txtTitle.setText(menu.title);
    //holder.txtHighScore.setText("High Score : "  + menu.highscore);
    holder.rtbHighScore.setRating(menu.highscore/20);
    return row;
}

助けてくれてありがとう:D

4

3 に答える 3

1

アダプタの getView メソッドで textview への参照を取得できます。

holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);

この後、書体を設定できます

于 2013-01-05T14:19:44.497 に答える
1
holder.txtTitle.setText(menu.title);

after this in getview try

holder.txtTitle.setTypeFace(face);
于 2013-01-05T14:22:42.200 に答える
1

私があなたの質問に残したコメントとして、次のようなgetView()行の下のメソッドでタイトル textview の typeFace を設定できます。holder.txtTitle.setText(menu.title);

Assets からタイプフェイス インスタンスを取得するには、Context パラメータをアダプターに渡す必要がありますonCreate()

編集

Typeface customFont = Typeface.createFromAsset(getContext().getAssets(),"Androgyne_TB.otf");

次に、typeFace を以下のように設定できます。

holder.txtTitle.setTypeFace(customFont);

于 2013-01-05T14:24:21.487 に答える