我有一個名爲「show_in_list」的字段設置爲true或false的api。在我的適配器爲我的看法回收我已經這樣做了RecyclerView不隱藏某些項目
public class EmoticonAdapter extends RecyclerView.Adapter<EmoticonAdapter.ViewHolder> {
private Context mContext;
private EmoticonResponse mEmoticon;
private Emoticons mEmoticons;
public class ViewHolder extends RecyclerView.ViewHolder {
private ImageView mEmoticonButton;
public ViewHolder(View v) {
super(v);
mEmoticonButton = (ImageView) v.findViewById(R.id.emoticonImages);
}
}
public EmoticonAdapter(Context context, EmoticonResponse response) {
mContext = context;
mEmoticon = response;
if (mEmoticon == null) {
mEmoticon = new EmoticonResponse();
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view;
view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.grid_item_emoticon, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
mEmoticons = mEmoticon.getItem(position);
if (mEmoticons.getEmoticon().getUrl() != null) {
if (mEmoticons.getEmoticon().getShow_in_list().equalsIgnoreCase("true")) {
Picasso.with(mContext)
.load(mEmoticons.getEmoticon().getUrl())
.into(holder.mEmoticonButton);
holder.mEmoticonButton.setVisibility(ImageView.VISIBLE);
holder.mEmoticonButton.setClickable(true);
}
}
}
@Override
public int getItemCount() {
return mEmoticon.getItems().size();
}
}
和我的XML看起來像這樣的項目在RecyclerView
<ImageView
android:id="@+id/emoticonImages"
android:layout_width="40dp"
android:layout_height="40dp"
android:clickable="false"
android:visibility="gone"/>
我遇到的問題是,當我加載視圖有些項目不可見,但會在其他項目之間造成巨大差距,您仍然可以點擊它們。
它是什麼,我做錯了嗎?我正在做所有的教科書,但我必須錯過一些正確的東西?
編輯全班已添加
你的按鈕的可見性設置爲走了,但持有人是可見的。你需要着眼於讓'onBindViewHolder()'不被調用,你不想顯示的項目。 –
@howdoidothis我該怎麼做呢? – BilalMH
發佈您的整個班級,以便我可以提供更好的幫助。你需要做的是過濾數據集,使它只包含可見項,這樣當調用'.getItemCount()'時,它會返回可見項的數量。所以這個視圖只用可見數量的持有者來創建 –