0

私はAndroidの初心者です。

ExpandableListView アダプター内でカスタム カラーを設定しようとしています。colors.xml で色を定義しましたが、アダプターで使用できません。「メソッド getResources() は、タイプ ExpandableListAdapter に対して定義されていません」というエラーが表示されます。

この関数は int を想定しています。getResources からの結果を渡そうとしましたが、うまくいきません。16 進数値も渡そうとしましたが、何も変わりません。

コードでカスタム カラーを使用するにはどうすればよいですか?

    public View getGroupView(int groupPosition, boolean arg1, View convertView,
        ViewGroup arg3) {
    int n = 0;
    String laptopName = (String) getGroup(groupPosition);
    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.group_item, null);
    }
    TextView item = (TextView) convertView.findViewById(R.id.demo);
    item.setTypeface(null, Typeface.BOLD);
    item.setText(laptopName);

    convertView.setBackgroundColor(getResources().getColor(R.color.purple));

    return convertView;
}

みんなありがとう、次のスニペットは機能します

this.context = (Activity) context;
    convertView.setBackgroundColor(this.context.getResources().getColor(R.color.purple));
4

4 に答える 4

1

loulou8284 が述べたように、XML に配置するか、修正されている場合は で定義Color.rgb()できますが、コードを実行するには、クラスがコンテキストクラス内で宣言されていないため、コンテキストへの参照を取得する必要があります。

convertView.setBackgroundColor(getContext().getResources().getColor(R.color.purple));
于 2013-07-24T22:59:34.827 に答える
1

これではなく、アダプターのどこかにコンテキストインスタンスがあると仮定します

convertView.setBackgroundColor(getResources().getColor(R.color.purple));

それはこれであるべきです

convertView.setBackgroundColor((your context).getResources().getColor(R.color.purple));

コンテキストへの参照がない場合は、それをアダプターコンストラクターに渡すだけです

于 2013-07-24T23:00:19.450 に答える
0

.xml ファイル (項目 xml ファイル) で色を宣言できます。

于 2013-07-24T22:50:29.070 に答える