java - Recyclerview在滚动时加载更多丢失的项目点击
问题描述
我对 Recyclerview 项目单击有问题。当在. list()
_ 我通过片段上的点击界面获得项目位置。首先获取数据工作正常,但是当获取更多负载时,无法使用方法将项目位置检索到新数据。addItem()
addOnScrollListener
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);
}
解决方案
我不确定这是否是您的问题,但您应该使用ViewHolder
来获得职位。在您的内部onBindViewHolder
:
@Override
public void onClick(View view){
int itemPosition = holder.getAdapterPosition();
// Then do whatever you need to with the position
}
推荐阅读
- c - 如何使用 uECC 计算签名?
- java - 使用 oracle olapi 未发现数据异常
- html - 在 InteliJ 中将 Javadoc 导出为 html
- android - android gradle 3.2.1 到 3.3.1 使用 CDATA 破坏字符串资源
- java - 在 Java 中按列而不是行对 2D 数组进行平面映射
- python - 如何打印数组元素?
- ansible - 运行一个未包含在剧中但属于角色的 ansible 任务
- r - 如何替换 R 矩阵中匹配行名、列名和值的值
- excel - 如何使用 VBA 插入包含数字变量的公式
- angular - 部署在 Kubernetes 入口路径上时无法获得 Angular 7 路由