4

拡張ArrayAdapter<T>して挿入したいアダプターがありますLayoutInflater。以下にコードを示しますが、インフレータは常にnull

public abstract class MyAdapter<T> extends ArrayAdapter<T> {

    @Inject
    protected LayoutInflater inflater;

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // inflater here is null
    }
}
4

2 に答える 2

5

おそらく、MyAdapterインスタンスをnew注入する代わりにで作成しました。

この場合、このクラスのさまざまな実装、たとえばテスト用LayoutInflaterのモックを使用する場合を除いて、注入することはお勧めしません。LayoutInflater

コンストラクターでインスタンスを取得します。

inflater = LayoutInflater.from(context);

それはより効率的でしょう。注射による効果は見当たりませんLayoutInflater
依存性注入は問題ありませんが、必要がなく遅い場合は使用しないでください。

于 2012-09-19T12:00:19.593 に答える
5

任意のクラスに依存関係を注入する

 RoboGuice.getInjector(context).injectMembers(this);

コンストラクターで使用します。コンテキストが必要なだけです。私にとっては素晴らしい作品です

于 2013-08-30T23:30:11.833 に答える