私はstackoverflowで同様の質問を見ましたが、私の質問に明確な答えはありません。私の完全な質問を読む前にそれを公証としてマークしないでください。私はthisリンク、this、およびthisも見ました。 これを読んでいただきありがとうございます。getItemCountメソッドとgetItemViewTypeメソッドがRecyclerアダプタで呼び出されたとき
私はソースコードの下に3つの質問を付けました。親切に見てください。
私はそれを簡単にします。私は2つをViewHolderを私はで使用しようとしているRecyclerアダプタで使用しようとしています。TabLayoutのためのViewPager。両方のビューホルダー異なるxmlと異なる要素(すなわちtextview、imageviewなど..)しかし、それの中にいくつかの混乱を打たれた。
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public class MainViewHolder extends RecyclerView.ViewHolder {
public MainViewHolder(View v) {
super(v);
}
class ViewHolder0 extends MainViewHolder {
...
}
class ViewHolder2 extends MainViewHolder {
...
}
@Override
public int getItemViewType(int position) {
/**** I don't know where and when this method will be called and what will be the value present in the variable "position" ****/
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case 0: return new ViewHolder0(...);
case 2: return new ViewHolder2(...);
...
}
}
public int getItemCount() {
/**** I don't know where and when this method will be called and what will be the value present in the variable "position" ****/
}
}
を次のように私は私のRecyclerViewアダプタクラスを実装し、私の質問は、
Q1ます。いつどこでgetViewTypeが呼び出され、 "ポジション"に何があり、何を返す必要がありますか?返す必要があるもの:
Q2。いつ、どこgetItemCountが呼び出され、どのように私は正しく(私は2つのビューの所有者を使用していますが、それぞれが異なる数を持っていますので)
Q3を返すことができます。私は別のRecyclerview Adapterクラスを作成しましたが、RecyclerViewAdapterクラスが別のものと衝突するエラーが発生しました。 (私はTabLayoutと同じアクティビティでそれらを使用しているので、エラーがスローされたと思いましたか、それとも別のアダプタクラスを作成する方法がありますか)
RecyclerViewAdapterの完全なプロセスを説明できれば素晴らしいです:)しかし、上記の混乱を明確にしてください。
ヘルプの任意のタイプ、事前に感謝を歓迎... :)
のようなビューホルダーでitemViewを変更 'getItemCount'は、あなたの' RecyclerView'内の項目の合計数を返し、 'getViewType'は、[値で呼び出され0..' cnt'-1] 'getItemCount'によって' cnt'が返されます – pskink
@pskink同じアダプタで2つ以上のホルダを使用する場合、各ホルダは、OnCreateとOnBindで別々のカウント操作と分離操作を行います。コードですか? – Ganesh
これらのメソッドの中に 'Log.d'をいくつか追加すると、それは学習の最善の方法です。 – pskink