Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 回收器视图的getItemViewType和getItemId方法的使用_Android_Android Recyclerview - Fatal编程技术网

Android 回收器视图的getItemViewType和getItemId方法的使用

Android 回收器视图的getItemViewType和getItemId方法的使用,android,android-recyclerview,Android,Android Recyclerview,我遇到了一个问题:当我在recycler视图中单击单个项目的复选框时,其他项目的复选框也被选中了……但当我跳过这两种方法并用它重新定位时,问题就解决了。。。。 所以我的问题是他们是如何解决我的问题的 已经知道android文档中写了什么 @Override public long getItemId(int position) { return position; } @Override public int getItemViewType(int position) { re

我遇到了一个问题:当我在recycler视图中单击单个项目的复选框时,其他项目的复选框也被选中了……但当我跳过这两种方法并用它重新定位时,问题就解决了。。。。 所以我的问题是他们是如何解决我的问题的

已经知道android文档中写了什么

@Override
public long getItemId(int position) {
    return position;
}

@Override
public int getItemViewType(int position) {
    return position;
}
getItemViewType()主要用于根据位置显示不同类型的视图

假设您有一个聊天适配器,发送方用户聊天应该位于右侧,接收方用户聊天应该位于左侧。在这种场景中,您可以使用getItemViewType(基于用户id,您可以显示不同的视图)


getItemId():当我们尝试为特定项目执行特定任务时,通常使用此选项。对于getItemId,您可以检查此项

它们实际上通过传递listgetItemId中的位置来告诉单击的项目必须返回唯一的值。您是否添加了if else检入ViewHolder?因为仅使用“if”是不够的,所以我认为在您想要在适配器中定义HeaderView和ChildView时,还需要通知以前选择的元素以及if-ElSe。您可以使用getItemViewType。其中getItemId是适配器中单个项的唯一id。