- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试在回收器 View 中选择一个元素时,不会调用 OnBindViewHolder。我使用的是水平布局,所有元素最初都没有显示(显示 7 个元素中的 4 个,当用户向右移动时,这 3 个元素交替出现)。通常,当用户单击一个元素时,OnBindViewHolder 应该会触发,但它不会发生在我身上。它唯一一次触发是在初始化时。因为它没有触发,所以我无法单击回收器 View 中的任何元素。也许这可能与我的布局有关?我不确定
MyAdapter
public MyAdapter(){
this.setHasStableIds(true);
}
//Set Keys
public void setSelectionTracker(SelectionTracker<Long> selectionTracker) {
this.mSelectionTracker = selectionTracker;
}
public static class MyViewHolder extends RecyclerView.ViewHolder{
public TextView dayView, numberView;
public View view;
ScheduleDetails scheduleDetails = new ScheduleDetails();
public MyViewHolder(View itemView){
super(itemView);
view = itemView;
dayView = itemView.findViewById(R.id.day);
numberView = itemView.findViewById(R.id.day_number);
}
void bind(int position, String dayInit, String numberInit, Boolean isSelected){
scheduleDetails.position = position;
System.out.println("Hit2: " + scheduleDetails.position);
dayView.setText(dayInit);
numberView.setText(numberInit);
view.setSelected(isSelected);
}
public ItemDetailsLookup.ItemDetails<Long> getItemDetails(@NonNull MotionEvent motionEvent){
return scheduleDetails;
}
}
static class ScheduleDetails extends ItemDetailsLookup.ItemDetails<Long>{
int position;
Long identifier;
@Override
public int getPosition() {
return position;
}
@Nullable
@Override
public Long getSelectionKey() {
return identifier;
}
@Override
public boolean inSelectionHotspot(@NonNull MotionEvent e){
return true;
}
}
public MyAdapter(String[] day, String[] number){
days = day;
numbers = number;
}
@Override
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.recycler_layout, parent, false);
MyViewHolder vh = new MyViewHolder(view);
return vh;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
String dayInit = days[position];
String numberInit = numbers[position];
Long positions = (long) position;
System.out.println("Position: " + position);
boolean isSelected = false;
if(mSelectionTracker != null){
if(mSelectionTracker.isSelected(positions)){
isSelected = true;
}
holder.bind(position, dayInit, numberInit, isSelected);
}
}
// Return the size of your dataset (invoked by the layout manager)
@Override
public int getItemCount() {
return days.length;
}
@Override
public long getItemId(int position) {
return position;
}
最佳答案
已解决
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
String dayInit = days[position];
String numberInit = numbers[position];
Long id = getItemId(position);
boolean isSelected = false;
if(mSelectionTracker != null) {
if (mSelectionTracker.isSelected(id)) {
isSelected = true;
}
}
System.out.println("Here: " + isSelected);
holder.bind(position, id, dayInit, numberInit, isSelected);
}
@Override
public long getItemId(int position) {
return position;
}
我从 getItemId 检索位置并将其放入我的 id 变量(我使用 setHasStableIds)。此实现不需要点击监听器。这是针对 androidx recyclerview-selection 库
最后我在 MyViewHolder 中声明了这些:
scheduleDetails.position = position; scheduleDetails.identifier = key;
关于java - Recycler View 不调用 onBindviewHolder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59538224/
我正在开发我的应用程序,它要求电影海报的比例为 1:2。我找到了一种方法来做到这一点就是运行 movieAdapterViewHolder.posterview.requestLayo
我在 CardAdapter 中使用 onBindViewHolder。它包括 checkedTextView 的 onClick 方法。我试图获取这些文本并将其放入 Arraylist(shared
在适配器 submitList 到 DiffUtil 之后,调用 onBindViewHolder 并且出于某种原因它总是将列表滚动到顶部。 我尝试了 SO 中关于在 recyclerview 更新列
我收到错误:“FlickrRecyclerViewAdapter”类必须声明为抽象类或在“适配器”中实现方法抽象方法 onBindViewHolder(VH, int) 虽然这个错误应该是 self
我有一个 recyclerview 显示我的数据。在我的适配器类中,在 onBindViewHolder() 中,我为一个按钮创建了一个监听器,该按钮在单击时删除了一行。第一次工作得很好,但如果我尝试
如果图像不存在,我将尝试下载它们;如果已经下载,我将尝试保留并重新使用它们。 下载和展示作品时,不会重复使用它们。似乎 mValues 在不同的调用中不是相同的 mValues。 这是我的代码 pub
我已经将第三方库用于进度条,一切正常,但在 onBindViewHolder 方法中,当我编写 holder.donutprogress.setFinishedStrokeColor(colorsda
ViewPager 发布 1.0.0 版本 对于普通的 RecyclerView,holder.itemView给我当前绑定(bind)/渲染的 View 。 但是,FragmentStateAdap
我想在下一类 ChildViewHolder 的 onBindViewHolder 中访问 DayOfWeek,这样我就可以在 if 语句中使用它,如 ChildRecyclerAdapter 中所示
我在recycview中有很多按钮我只是想将它们添加到数组中,然后让它们添加一些工作。 首先我定义了数组名称“buttons”ToggleButton 按钮[] = new ToggleButton[
当我调用notifyDataSetChanged()时,它不会调用我的onBindViewHolder,我不知道它为什么这样做,我当前正在使用自定义布局,不知道这是否与它有关。 有人有什么想法吗?这是
我有一个TestActivity: public class TestActivity extends AppCompatActivity { @Override protected
我想填写诸如用户名、全名之类的内容,显示 follow_btn 的可见性。最大的问题是我不能在 onbindviewholder 中使用。它用红色下划线标出。你能帮我吗? 错误是:error: can
我正在尝试使用 RecyclerView 显示一个左侧有图像、右侧有标题的列表。 通过 for 循环,我在 ArrayList 中添加了标题和图像 String[] mtitles = {"Title
您好,当 recyclerview 第一次创建 OnbindViewHolder 时,我遇到了一个奇怪的问题,直到 recyclerview 中的最后一个项目被调用,然后当我滚动时OnbindView
onBindViewHolder 在数据绑定(bind)到 View 后的第一个位置和最后一个位置意外调用。这造成了问题,因为当我尝试向列表中添加项目时,最后一项的 ImageViews(相似和不同)
设置 我有一个带有自定义适配器和自定义 ViewHolder 的 RecyclerView。 我理解 onCreateViewHolder() 方法在 RecyclerView 用完 ViewHold
我知道这个问题已被多次询问与 ListViews 有关,但我一直无法真正理解解决方案。我知道 RecyclerViewAdapter 中 onBindViewHolder() 的位置参数类似于 lis
我已经将 RececlerView 与 ViewHolder 模式结合使用了一段时间。我正在实现自定义 Adapter。 我不是在我的代码中搜索特定的错误帮助。 我只是想知道,如果它是正常的,onBi
当我在我的 RecyclerView 上调用 notifyItemChanged() 时,相应的 Views(在本例中为按钮)没有按预期更新.我调用他们的原因是数据已经改变,这会导致他们的背景颜色改变
我是一名优秀的程序员,十分优秀!