recyclerViewのアダプター内でscrollToPosition(position)を呼び出す方法は?

ニコディオソ:

私のsetOnClick中にリスナーがいますonBindViewHolder

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
       ((ViewHolder) holder).txtType.setText(object.text);
       ((ViewHolder) holder).checkBox.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) { 
                        Toast.makeText(mContext, ""+position, Toast.LENGTH_SHORT).show();                           
                      //???.scrolltoPosition(position+1);
                    }
                });

クリックすると、ビューポートを次のリサイクラービューアイテムまでスクロールします。私はMainActivity javaの内部でこれを行いましたrecyclerView.scrollToPosition(position);しかし、onBindViewHolderのアダプタクラス内では、メインJavaクラスでrecyclerViewを呼び出す方法がわかりません。

どうすればよいですか?

編集:簡単にするために、この以前のコードを改訂しました。これは、リサイクラーにマルチビューアダプターを使用したためです。マルチビューアダプターは次のとおりです。

public class MultiViewTypeAdapter extends RecyclerView.Adapter {

private ArrayList<InstructionModel>dataSet;
Context mContext;
int total_types;
private LinearLayoutManager manager;

public MultiViewTypeAdapter(LinearLayoutManager manager)
{
    this.manager=manager;
}


public static class SimpleTextViewHolder extends RecyclerView.ViewHolder {

    TextView txtType;
    CardView cardView;
    CheckBox checkBox;

    public SimpleTextViewHolder(View itemView) {
        super(itemView);

        this.txtType = (TextView) itemView.findViewById(R.id.type);
        this.cardView = (CardView) itemView.findViewById(R.id.card_view);
        this.checkBox = (CheckBox) itemView.findViewById(R.id.checkBox);

    }
}
public static class TimeTextViewHolder extends RecyclerView.ViewHolder {

    TextView txtType;
    CardView cardView;
    CheckBox checkBox;

    public TimeTextViewHolder(View itemView) {
        super(itemView);

        this.txtType = (TextView) itemView.findViewById(R.id.type);
        this.cardView = (CardView) itemView.findViewById(R.id.card_view);
        this.checkBox = (CheckBox) itemView.findViewById(R.id.checkBox);
    }
}




public MultiViewTypeAdapter(ArrayList<InstructionModel> data, Context context) {
    this.dataSet = data;
    this.mContext = context;
    total_types = dataSet.size();
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View view;
    switch (viewType) {
        case InstructionModel.SIMPLE_TYPE:
            view = LayoutInflater.from(parent.getContext()).inflate(R.layout.simple, parent, false);
            return new SimpleTextViewHolder(view);
        case InstructionModel.TIME_TYPE:
            view = LayoutInflater.from(parent.getContext()).inflate(R.layout.time, parent, false);
            return new TimeTextViewHolder(view);
    }
    return null;
}

@Override
public int getItemViewType(int position) {

    switch (dataSet.get(position).type) {
        case 0:
            return InstructionModel.SIMPLE_TYPE;
        case 1:
            return InstructionModel.TIME_TYPE;
        default:    return -1;
    }
}

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int listPosition) {

    InstructionModel object = dataSet.get(listPosition);
    if (object != null) {
        switch (object.type) {

            case InstructionModel.SIMPLE_TYPE:

                ((SimpleTextViewHolder) holder).txtType.setText(object.text);
                break;
            case InstructionModel.TIME_TYPE:
                ((TimeTextViewHolder) holder).txtType.setText(object.text);

                break;
        }
    }



}

@Override
public int getItemCount() {
    return dataSet.size();
}

PSランダムに役に立たないものを見つけたら、私は何かを試していました。

MJM:

パスLayoutMangerconstuctorで

 class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
            private LinearLayoutManager manager;

            public Adapter(LinearLayoutManager manager)
            {
                this.manager=manager;
            }


        @Override
        public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
           ((ViewHolder) holder).txtType.setText(object.text);
           ((ViewHolder) holder).checkBox.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) { 
                            Toast.makeText(mContext, ""+position, Toast.LENGTH_SHORT).show();                           
                          manager.scrollToPosition(position+1);
                        }
                    });
    }

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

フラグメント内のRecyclerViewアダプターのメソッドを呼び出す方法

分類Dev

CSSのID内でアンカーを呼び出す方法は?

分類Dev

新しいRecyclerViewアダプターの初期化は非同期呼び出しですか?

分類Dev

アダプターがnotifyDataSetChangedを呼び出すたびに、recyclerviewが表示されない、消える、または消えるのはなぜですか?

分類Dev

Lispのforループ内で関数を呼び出す方法は?

分類Dev

RecyclerViewアダプターのonBindViewHolder内でoverridePendingTransitionを宣言する方法は?

分類Dev

アダプター内で非同期アダプター呼び出しを行う方法

分類Dev

アプリフォルダーの外でテンプレートを呼び出す方法は?

分類Dev

他のアダプターからワークライトアダプターを呼び出す方法

分類Dev

recyclerViewアダプターからフラグメントを呼び出す

分類Dev

ボレー呼び出し後に変更されたデータのrecyclerviewアダプターを更新する方法

分類Dev

bluemix の openwhisk プラットフォーム内で openwhisk アクションを呼び出す方法は?

分類Dev

forループ内で変数を呼び出す方法は?

分類Dev

MobileFirst Platform 7.0のJSアダプタプロシージャからJavaアダプタプロシージャを呼び出す方法は?

分類Dev

ngForループ内で別の変数を呼び出す方法

分類Dev

アクティビティからRecyclerViewアダプタのメソッドを呼び出すことはできません

分類Dev

アダプタクラス内のメソッドを呼び出す

分類Dev

recyclerviewアダプター内のKotlinでJSON日付を文字列に変換する方法は?

分類Dev

RecyclerViewアダプタクラスでパーミッションを要求する-onRequestPermissionsResultは呼び出されません

分類Dev

ラムダ内でプロパティセッターを呼び出す

分類Dev

React / Jsxでレンダー内の複数の関数を呼び出す方法

分類Dev

なぜRecyclerViewアダプタ上のonCreateViewは呼び出されませんか?

分類Dev

Recyclerviewはアダプタメソッドを呼び出さない:onCreateViewHolder、onBindViewHolder、

分類Dev

パンダのループ内でローカル変数を呼び出す

分類Dev

ドローアブルフォルダ内の新しいベクターアセットをxmlから呼び出すことはできません

分類Dev

forループ内のリストアイテムの数を呼び出す方法

分類Dev

notifyitemsetchanged()を呼び出した後、RecyclerViewアダプタデータがリセットされます

分類Dev

ノードエクスプレスでループ内のサービスを呼び出す方法は?

分類Dev

Activity から ListView アダプタの getItem(i) を呼び出す方法

Related 関連記事

  1. 1

    フラグメント内のRecyclerViewアダプターのメソッドを呼び出す方法

  2. 2

    CSSのID内でアンカーを呼び出す方法は?

  3. 3

    新しいRecyclerViewアダプターの初期化は非同期呼び出しですか?

  4. 4

    アダプターがnotifyDataSetChangedを呼び出すたびに、recyclerviewが表示されない、消える、または消えるのはなぜですか?

  5. 5

    Lispのforループ内で関数を呼び出す方法は?

  6. 6

    RecyclerViewアダプターのonBindViewHolder内でoverridePendingTransitionを宣言する方法は?

  7. 7

    アダプター内で非同期アダプター呼び出しを行う方法

  8. 8

    アプリフォルダーの外でテンプレートを呼び出す方法は?

  9. 9

    他のアダプターからワークライトアダプターを呼び出す方法

  10. 10

    recyclerViewアダプターからフラグメントを呼び出す

  11. 11

    ボレー呼び出し後に変更されたデータのrecyclerviewアダプターを更新する方法

  12. 12

    bluemix の openwhisk プラットフォーム内で openwhisk アクションを呼び出す方法は?

  13. 13

    forループ内で変数を呼び出す方法は?

  14. 14

    MobileFirst Platform 7.0のJSアダプタプロシージャからJavaアダプタプロシージャを呼び出す方法は?

  15. 15

    ngForループ内で別の変数を呼び出す方法

  16. 16

    アクティビティからRecyclerViewアダプタのメソッドを呼び出すことはできません

  17. 17

    アダプタクラス内のメソッドを呼び出す

  18. 18

    recyclerviewアダプター内のKotlinでJSON日付を文字列に変換する方法は?

  19. 19

    RecyclerViewアダプタクラスでパーミッションを要求する-onRequestPermissionsResultは呼び出されません

  20. 20

    ラムダ内でプロパティセッターを呼び出す

  21. 21

    React / Jsxでレンダー内の複数の関数を呼び出す方法

  22. 22

    なぜRecyclerViewアダプタ上のonCreateViewは呼び出されませんか?

  23. 23

    Recyclerviewはアダプタメソッドを呼び出さない:onCreateViewHolder、onBindViewHolder、

  24. 24

    パンダのループ内でローカル変数を呼び出す

  25. 25

    ドローアブルフォルダ内の新しいベクターアセットをxmlから呼び出すことはできません

  26. 26

    forループ内のリストアイテムの数を呼び出す方法

  27. 27

    notifyitemsetchanged()を呼び出した後、RecyclerViewアダプタデータがリセットされます

  28. 28

    ノードエクスプレスでループ内のサービスを呼び出す方法は?

  29. 29

    Activity から ListView アダプタの getItem(i) を呼び出す方法

ホットタグ

アーカイブ