【发布时间】:2015-11-14 10:52:23
【问题描述】:
我在 stackoverflow 中看到了类似的问题,但他们没有对我的问题给出明确的答案。在阅读我的完整问题之前,不要将其标记为重复。我也看到了this 链接、this 和this。 感谢您花时间阅读本文。
我在源代码下面给出了我的三个问题,请看一下。
我会让它变得简单。我正在尝试在 Recycler Adapter 中使用 two ViewHolder,我将在 ViewPager 中将其用于 TabLayout。两个 View Holder 都具有 不同 Xml 和不同的元素(即 textview 、 imageview 等),但在其中遇到了一些混乱。
我实现了我的 RecyclerView 适配器类如下
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" ****/
}
}
我的问题是,
第一季度。何时何地调用 getViewType,“position”变量中的内容以及我们需要返回什么
第二季度。何时何地调用 getItemCount 以及如何正确返回(因为我正在使用 两个视图持有者,每个持有者都有不同的计数)
第三季度。我创建了单独的 Recyclerview 适配器类,但它给出了一个错误,即 RecyclerViewAdapter 类 冲突 与另一个类。 (因为我在 TabLayout 的相同活动中使用它们,我认为抛出了错误,我正确吗?或者有什么方法可以创建单独的适配器类)
如果你能解释 RecyclerViewAdapter 的全过程,那就太棒了:) 但是请澄清我上面的困惑。
欢迎任何类型的帮助,在此先感谢... :)
【问题讨论】:
-
getItemCount返回RecyclerView中的项目总数,getViewType使用值 [0..cnt-1] 调用其中cnt由getItemCount返回 -
@pskink 当我在同一个 Adapter 中使用两个或多个 Holder 时,每个 Holder 在 OnCreate 和 OnBind 中都有其单独的 Count 和 Seperate 操作,我该如何识别和编码?
-
在这些方法里面加一些
Log.d,这是最好的学习方法 -
@pskink Cool.. 这真是太棒了。 :D
标签: android adapter android-recyclerview