バターナイフがアダプタクラス内でバインドできません

療法。

ナビゲーションドロワーのレイアウトを描画するアダプターがあります。私のナビゲーションドロワーには、2つの内部xmlファイルが含まれています。1つはでHeader、もう1つRowです。これらを単一のアダプターで引き出しますがsetText()、ヘッダーを作成しようとすると、バインドに失敗します。これが私のアダプタクラスです:

public class DrawerAdapter extends RecyclerView.Adapter<DrawerAdapter.ViewHolder> {

private static final int HEADER_TYPE = 0;
private static final int ROW_TYPE = 1;
private static Context context;
private static DatabaseHelper databaseHelper;

private List<String> rows;
private List<Integer> icons;
private String driverName;

public DrawerAdapter(Context context, List<String> rows, List<Integer> icons, String driverName, DatabaseHelper databaseHelper) {
    this.icons = icons;
    this.rows = rows;
    this.context = context;
    this.driverName = driverName;
    this.databaseHelper = databaseHelper;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    if (viewType == HEADER_TYPE) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.drawer_header, parent, false);
        return new ViewHolder(view, viewType);

    } else if (viewType == ROW_TYPE) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.drawer_row, parent, false);
        return new ViewHolder(view, viewType);
    }
    return null;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    if (holder.viewType == ROW_TYPE) {
        String rowText = rows.get(position - 1);
        int imageView = icons.get(position - 1);
        holder.textView.setText(rowText);
        holder.imageView.setImageResource(imageView);
    } else if (holder.viewType == HEADER_TYPE) {
        holder.driverNameText.setText(driverName);
    }
}

@Override
public int getItemCount() {
    return rows.size() + 1;
}

@Override
public int getItemViewType(int position) {
    if (position == 0)
        return HEADER_TYPE;
    return ROW_TYPE;
}

public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    protected int viewType;
    @Bind(R.id.drawer_row_icon)
    ImageView imageView;
    @Bind(R.id.drawer_row_text)
    TextView textView;
    @Bind(R.id.drawer_row_id)
    FrameLayout listRow;
    @Bind(R.id.driverName)
    TextView driverNameText;

    public ViewHolder(View itemView, int viewType) {
        super(itemView);

        this.viewType = viewType;

        if (viewType == ROW_TYPE) {
            ButterKnife.bind(this, itemView);
            imageView.setOnClickListener(this);
            textView.setOnClickListener(this);
            listRow.setOnClickListener(this);
        } else {
            ButterKnife.bind(this, itemView);
        }
    }


 }

私のonCreateViewHolder方法でviewTypeわかるように、両方をチェックしているので、どちらのレイアウトを描画するかがわかります。これにより、ViewHolderクラスの新しいオブジェクトが作成され、に応じてxml内の要素をバインドするように「TRY」しviewTypeます。私は何かが足りないのですか、それとも間違ったことをしていますか?

療法。

私は次のことを行うことでこの問題を解決することができました:

まず、APIドキュメントには次のように記載されています

デフォルトでは、フィールドとメソッドの両方のバインディングのレイアウトにビューが存在する必要があります。ビューがオプションの場合は、support-annotationsライブラリにあるような@Nullableアノテーションを追加します。

@Nullable @Bind(R.id.title) TextView subtitleView;

http://jakewharton.github.io/butterknife/javadoc/

バインドする要素が異なるxmlファイルからのものであるため、そもそもバインドできない可能性があるため、@ Nullableとしてタグ付けする必要がありました。次のようにコードを変更しました。

@Nullable @Bind(R.id.drawer_row_icon)
ImageView imageView;
@Nullable @Bind(R.id.drawer_row_text)
TextView textView;
@Nullable @Bind(R.id.drawer_row_id)
FrameLayout listRow;
@Nullable @Bind(R.id.driverName)
TextView driverNameText;

ButterKnife.bind()私のIF-ELSEブロック外側にも移動しながら

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

バターナイフがアダプタクラス内でバインドできません

分類Dev

ドライバーがI / ODMAアダプターを取得できません

分類Dev

外部にロードバランサーがあるKubernetesクラスター内のファイルにアクセスできません

分類Dev

プロバイダーにフラッターでアクセスできません

分類Dev

DKMSドライバーがスタックし、アンインストールできません

分類Dev

DockerSeleniumスタンドアロンサーバーがコンテナ内のグリッドブラウザにファイルをアップロードできません

分類Dev

バターナイフ-フラグメントのビューをバインドできません

分類Dev

C ++-フレンドオペレーターはプライベートデータメンバーにアクセスできません

分類Dev

ArrayListをアダプターにバインドできません

分類Dev

「pg_restore:[アーカイバ]サポートされていないバージョン(1.13)のファイルヘッダー」エラーが発生するPostgreSQLデータベースバックアップを復元できません

分類Dev

IPv6ループバックインターフェイスでhttp:// localhost:5000にバインドできません: '要求されたアドレスを割り当てることができません'

分類Dev

USBドライブはデバイスマネージャーに表示されますが、ファイルエクスプローラー/マイコンピューターからはアクセスできません

分類Dev

MongoのJavaのドライバは、インターフェイスのpublicコンストラクタを見つけることができません

分類Dev

データバインディングインクルードパラメータは自動アップキャストできません

分類Dev

フラッター:アプリがバックグラウンドにあるがiOSで終了していない場合、通知クリックで特定の画面にリダイレクトできません

分類Dev

フレンド機能はプライベートメンバーにアクセスできません

分類Dev

フレンド機能はプライベートメンバーにアクセスできません

分類Dev

フレンドostreamはプライベートメンバーにアクセスできません

分類Dev

ドライバをインストールできませんAlfaAWUS036HUSBワイヤレスアダプタ

分類Dev

匿名リスナークラスでのバターナイフバインド

分類Dev

新しいitunesユーザーインターフェイスが「バイナリをアップロードする準備ができました」を見つけることができません

分類Dev

エラーITMS-90085:「バイナリにアーキテクチャがありません。Lipoは、バンドル実行可能ファイル内のアーキテクチャを検出できませんでした。」

分類Dev

フラッターのフラットボタンでプロバイダーを使用してリストにデータを追加できません

分類Dev

バターナイフで生成されたコードでシンボルクラスが見つかりません

分類Dev

イベントハンドラー内のReactインスタンス(this)にアクセスできません

分類Dev

Heroku Node.js-エラーR10(ブートタイムアウト)-> Webプロセスが$ PORTにバインドできませんでした

分類Dev

Reactフロントエンドがnode-expressバックエンドサーバーを呼び出すことができません。フルスタックアプリがherokuにデプロイされています

分類Dev

ローカルのスプリングクラウドデータフローサーバーでシェルをポイントできませんか?

分類Dev

サーバーレス紺碧のオフライン:値をnullにすることはできません。(パラメーター 'プロバイダー')

Related 関連記事

  1. 1

    バターナイフがアダプタクラス内でバインドできません

  2. 2

    ドライバーがI / ODMAアダプターを取得できません

  3. 3

    外部にロードバランサーがあるKubernetesクラスター内のファイルにアクセスできません

  4. 4

    プロバイダーにフラッターでアクセスできません

  5. 5

    DKMSドライバーがスタックし、アンインストールできません

  6. 6

    DockerSeleniumスタンドアロンサーバーがコンテナ内のグリッドブラウザにファイルをアップロードできません

  7. 7

    バターナイフ-フラグメントのビューをバインドできません

  8. 8

    C ++-フレンドオペレーターはプライベートデータメンバーにアクセスできません

  9. 9

    ArrayListをアダプターにバインドできません

  10. 10

    「pg_restore:[アーカイバ]サポートされていないバージョン(1.13)のファイルヘッダー」エラーが発生するPostgreSQLデータベースバックアップを復元できません

  11. 11

    IPv6ループバックインターフェイスでhttp:// localhost:5000にバインドできません: '要求されたアドレスを割り当てることができません'

  12. 12

    USBドライブはデバイスマネージャーに表示されますが、ファイルエクスプローラー/マイコンピューターからはアクセスできません

  13. 13

    MongoのJavaのドライバは、インターフェイスのpublicコンストラクタを見つけることができません

  14. 14

    データバインディングインクルードパラメータは自動アップキャストできません

  15. 15

    フラッター:アプリがバックグラウンドにあるがiOSで終了していない場合、通知クリックで特定の画面にリダイレクトできません

  16. 16

    フレンド機能はプライベートメンバーにアクセスできません

  17. 17

    フレンド機能はプライベートメンバーにアクセスできません

  18. 18

    フレンドostreamはプライベートメンバーにアクセスできません

  19. 19

    ドライバをインストールできませんAlfaAWUS036HUSBワイヤレスアダプタ

  20. 20

    匿名リスナークラスでのバターナイフバインド

  21. 21

    新しいitunesユーザーインターフェイスが「バイナリをアップロードする準備ができました」を見つけることができません

  22. 22

    エラーITMS-90085:「バイナリにアーキテクチャがありません。Lipoは、バンドル実行可能ファイル内のアーキテクチャを検出できませんでした。」

  23. 23

    フラッターのフラットボタンでプロバイダーを使用してリストにデータを追加できません

  24. 24

    バターナイフで生成されたコードでシンボルクラスが見つかりません

  25. 25

    イベントハンドラー内のReactインスタンス(this)にアクセスできません

  26. 26

    Heroku Node.js-エラーR10(ブートタイムアウト)-> Webプロセスが$ PORTにバインドできませんでした

  27. 27

    Reactフロントエンドがnode-expressバックエンドサーバーを呼び出すことができません。フルスタックアプリがherokuにデプロイされています

  28. 28

    ローカルのスプリングクラウドデータフローサーバーでシェルをポイントできませんか?

  29. 29

    サーバーレス紺碧のオフライン:値をnullにすることはできません。(パラメーター 'プロバイダー')

ホットタグ

アーカイブ