我在 RecyclerView 中有一个移动联系人列表,我还有一个包含注册手机号码的在线数据库,我创建了一个 Web 服务来检查该号码是否已注册以及它是否正常工作。
我想要做的是右侧的项目中有一个邀请文本,我想让它对未注册用户可见,而注册用户对他们来说将不可见,这是我的 onBindViewHolder 下面
我现在得到的是邀请文本不断显示和消失,然后对所有人保持可见
@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int position) {
Log.d(TAG, "Element " + position + " set.");
// Get element from your dataset at this position and replace the contents of the view
// with that element
viewHolder.getTextView().setText(mDataSet[position]);
viewHolder.getTextView2().setText(mDataSet2[position]);
viewHolder.getImageView().setImageResource(mDataSet3[position]);
Phone phone=new Phone();
phone.phone=mDataSet2[position];
WebService.getInstance().getApi().checkNumber(phone).enqueue(new Callback<MainResponse>() {
@Override
public void onResponse(Call<MainResponse> call, Response<MainResponse> response) {
if (response.body().status == 1){
viewHolder.getTextViewInvite().setVisibility(View.GONE);
}else {
viewHolder.getTextViewInvite().setVisibility(View.VISIBLE);
}
}
@Override
public void onFailure(Call<MainResponse> call, Throwable t) {
viewHolder.getTextViewInvite().setVisibility(View.VISIBLE);
}
});
}
最佳答案
当您在 recyclerview 中滚动时,您正在调用 api,这肯定需要一些时间来响应,因此您的 View 分别显示和隐藏。
缺点:
滚动时不必要的网络调用。
理想情况下,您应该在加载联系人时而不是在滚动时预取所有用户的状态。如果您喜欢这种方法,请接受并实现。
关于java - Android - RecyclerView 更改项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44522217/