这是我当前的代码。我想在recyclerview
上隐藏一个特定的项目,但是当我使用visibility.gone
时,仍然在recyclerview上占用空间。我还尝试了所有可能的解决方案How to hide an item from Recycler View on a particular condition?任何帮助
for(int j =0; j < minusList.size(); j++){
int availableRooms = minusList.get(j);
if(norooms > availableRooms){ //norooms is the number of rooms wanted
holder.itemView.setVisibility(View.GONE);
mAdapter.notifyItemRemoved(position);
}else{
holder.rRoomsLeft.setText("Room available");
}
}
这是我的XML
<android.support.v7.widget.RecyclerView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false" />
答案 0 :(得分:0)
请尝试这个
for(int j =0; j < minusList.size(); j++){
int availableRooms = minusList.get(j);
if(norooms > availableRooms){ //norooms is the number of rooms wanted
holder.itemView.setVisibility(View.GONE);
mAdapter.notifyItemRemoved(position);
}else{
holder.itemView.setVisibility(View.VISIBLE);
holder.rRoomsLeft.setText("Room available");
}
}
答案 1 :(得分:0)
我猜您说“占用空间”是因为有行但没有显示“可用房间”。
要从RecyclerView中删除一行,首先要从下划线列表中删除该行,然后调用notifyItemRemoved或notifyDatasetChanged,而不是隐藏行的视图。
在这种情况下,您需要先从minusList中删除项目,然后调用notifyItemRemoved,否则,如果getItemCount()仍返回minusList.size,RecyclerView仍认为该行在那里,即使它不可见。
答案 2 :(得分:0)
使用以下方法代替使用__dir__
:
holder.itemView.setVisibility(View.GONE);
答案 3 :(得分:0)
ViewGroup.LayoutParams params = chatsViewHolder.itemView.getLayoutParams();
params.height = 0;
chatsViewHolder.itemView.setLayoutParams(params);