Gan*_*esh 13 android adapter android-recyclerview
我在stackoverflow中看到了类似的问题,但他们没有给出我的问题的明确答案.在阅读完整的问题之前,请勿将其标记为重复.我看到了这个链接,这也是这个.感谢您花时间阅读本文.
我在源代码下面给出了三个问题,请仔细看看.
我会简单的.我试图在Recycler Adapter中使用两个 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" ****/
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,
Q1.调用getViewType的时间和位置以及" position "变量中的内容以及我们需要返回的内容
Q2.调用getItemCount的时间和地点以及如何正确返回(因为我使用两个视图持有者,每个视图都有不同的数量)
Q3.我创建了单独的Recyclerview Adapter类,但它给出了一个错误,即RecyclerViewAdapter类与另一个类冲突.(因为我在TabLayout的相同活动中使用它们,我认为错误被抛出,我是否正确?或者有没有办法创建单独的Adapter类)
如果你能解释一下RecyclerViewAdapter的全过程,那就太棒了:)但请澄清我上面的混淆.
欢迎任何类型的帮助,提前谢谢... :)
Q1) 每次创建自定义视图时,都会在onCreateViewHolder()方法之前调用getViewType()方法.
您需要使用自定义列表项创建一个列表List<CustomItem> list=method_to_return_your_list(),并使用getViewType()getter方法创建每个列表项.
在你的get getItemViewType()中
public int getItemViewType(int position) {
return list.get(position).getViewType();
/*this returns the view type of each element in the list*/
}
Run Code Online (Sandbox Code Playgroud)
考虑到onCreateViewHolder()方法中的switch case语句,这可以是0或1
Q2) getItemCount()方法应该返回列表项的数量.
public int getItemCount() {
return list.size();
}
Run Code Online (Sandbox Code Playgroud)
Q3) 不要为同一个Recyclerview创建另一个recyclerview适配器
我也是模仿的. 而不是创建新的ViewHolders,只需更改视图持有者中的itemView
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case 0: return new ViewHolder(itemView0);
case 2: return new ViewHolder(itemView1);
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11133 次 |
| 最近记录: |