以下是onBindViewHolder
ViewHolder在RecyclerView.Adapter沒有具體定位
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// - get element from your dataset at this position
StatusItem item = mDataset.get(position);
//......
//Add content and timing to the textview
String content = item.getContent();
holder.mTextViewTime.setText(timing);
//Set the img
holder.imgViewIcon.setImageDrawable(item.getProfileDrawable());
//Set content image (for Instagram)
holder.mImageViewContentPic.setImageDrawable(item.getContentDrawable());
//HIDE THE VIEW Start
if(item.getContentDrawable() == null){
holder.mImageViewContentPic.setVisibility(View.GONE);
}
//HIDE THE VIEW End
}
如預期的部分HIDE THE VIEW
不工作的我的代碼部分(內側MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>
)。 當我向下滾動時,視圖正常工作。但是,當我開始向上滾動,即重新訪問先前的視圖時,應該是VISIBLE
的ImageView會變成GONE
,儘管我檢查了我的數據集並驗證了它未被修改。嘗試調用視圖上的其他方法也會導致不穩定的結果(數據集中的位置和項目不匹配)。
看來,持有人沒有綁定到RecyclerView內的特定位置。
如果我刪除HIDE THE VIEW
部件,代碼將按預期工作。 有什麼辦法解決這個問題,並動態地隱藏在我的情況下的意見?
注意:我使用了一些AsyncTasks來更新數據集並調用notifyDataSetChanged()
(如果相關的話)。
ViewHolder不應該是特定於位置。即,如果您有100個項目,則沒有100個ViewHolders。改寫適配器中的bindView方法(我記不清確切的名稱),以改變位置的可見性。 – harism 2014-09-27 16:22:16
似乎無法在'RecyclerView.Adapter'中找到此類方法。 – paradite 2014-09-27 16:30:53