当前位置: 首页 > 知识库问答 >
问题:

循环查看加载更多丢失的项目滚动时单击

李宁
2023-03-14

我对Recyclerview项单击有问题。当在addOnScrollListener中向下滚动时,我将数据提取到list()方法,并通过recyclerview自定义适配器中的addItem()方法进行添加。我通过点击碎片上的界面获得物品位置。首先获取数据工作正常,但在获取loadmore时,无法使用onButtonLClick()方法将项目位置检索到新数据。

// in onBindViewHolder;

holder.lnl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    rcylviewItemNotify.onButtonLClick(position);
                }catch (Throwable e){
                    //interface can be null
                }
            }
});

// addItem() method in adapter;

public void addItem(List<Image> img) {
        for (Image im : img) {
            arrayList.add(im);
        }
        notifyDataSetChanged();
 }

// interface code;

public interface RcylviewItemNotify {
    void onButtonLClick(int position);
}

// in Fragment code;

   public void list() {
        GetServices service = RetrofitInstance.getRetrofitInstance().create(GetServices.class);
        Call<Images> call = service.getImages();
        call.enqueue(new Callback<Images>() {
            @Override
            public void onResponse(Call<Images> call, Response<Images> response) {
                Images body = response.body();
                records = body.getImages();
                adapter.addItem(records);
            }

            @Override
            public void onFailure(Call<Images> call, Throwable t) {
                Toast.makeText(getActivity(), "Network hatası onFailure", Toast.LENGTH_SHORT).show();
                reflesh.setRefreshing(false);
            }
        });
    }

 @Override
    public void onButtonLClick(int position) {
        final String clickId = String.valueOf(records.get(position).getID());
        Toast.makeText(getActivity(), "ID: " + clickId, Toast.LENGTH_SHORT).show();
    }

// recycler settings;

    public void loadView() {
        layoutManager = new GridLayoutManager(getActivity(), 2);
        recyclerView.setLayoutManager(layoutManager);
        Collections.reverse(records);
        adapter = new RecyclerViewAdapter(this,(ArrayList<Image>) records, getActivity());
        recyclerView.setAdapter(adapter);
        adapter.notifyDataSetChanged();
        reflesh.setRefreshing(false);
    }

共有1个答案

施锋
2023-03-14

我不确定这是否是您的问题,但您应该使用ViewHolder获得该职位。在您的onBindViewHolder的内部

@Override
public void onClick(View view){
    int itemPosition = holder.getAdapterPosition();

    // Then do whatever you need to with the position 
}
 类似资料:
  • 我已经创建并能够标记已添加到滚动视图中的项目。我想找到一种方法来保存和存储创建的项目,以便当用户单击关闭页面时,它们仍然保留在那里。 我想通过使用share dprefs来做到这一点,但是我不确定如何以及在哪里添加代码是最好的地方。将感谢任何建议。

  • 我有一个问题与自动滚动在滚动视图。 在我的例子中,有两个Recyclerview。第一个循环视图,水平滚动,第二个垂直滚动。第一个循环视图仅用于拖动,第二个循环视图只用于拖放。两个循环视图都在ScrollView中,所以我在第二个循环视图中禁用了垂直滚动。我在第二个Recyclerview的项目中添加了DragListener。每个项目都有一个拖动侦听器,因此我在拖放项目时添加/替换项目。 所以我

  • 我正在和,的速度太快了。我要它慢下来。我确实尝试了许多其他的代码和方法,但没有一个对我有效。 这是我发现的 如何使RecyclerView平滑滚动? 这篇文章建议在和中不应该有I/O操作,并且在执行这些方法时花费太多时间会造成延迟。但是,我没有I/O操作,也没有太多的代码。 注意我正在尝试显示来自外部存储的图像。所以,在第一次加载时,glide将创建缩略图来缓存,然后在第二次加载时将不会有更大尺寸

  • 所以,这就是我的问题。我的recyclerview项目在底部有一个视图,我最初将其设置为消失。现在,当它们被点击时,我想让它们再次可见。所以在onClick方法中,我将视图设置为Visible。一切正常,但是当我向下滚动和向上滚动时,视图又隐藏了。我想这和取景模式有关。我想保持现状,即开放。我该怎么做?谢了。 视图支架: 点击: 编辑:上传的代码。此外,我尝试在onClick中更新Item的布尔值

  • 当我在回收器视图中选择一个项目时,会自动选择多个项目 我正在做的是 我只想获取没有重复的联系人,并在recyclerview中列出所有联系人,并使两个文本视图可见(一个用于数字,第二个用于名称)。完成了,但问题是 当我点击一个项目时,它会被点击4次(例如,如果我点击一个项目,它会显示两个文本视图,但具有相同名称和编号的相同项目会显示出来,就像我点击了4个项目并看到图片一样) 适配器类 在那里我得到

  • 你好,伙计们,我想使我的列表视图这样,一个项目滚动一次和平滑。这里是我尝试到目前为止,但没有运气:(请帮助和感谢提前 自定义ListView类 }