2016-06-28 96 views
0

我正在使用RecyclerView並使用只有一個textView的自定義行,在首次調用適配器時,textview在onBindViewHolder中正確設置,在第二次插入onBindViewHolder時調用成功,文本要設置也是可用的,但是當我在textview上設置文本時,它在回收站視圖上顯示一個空行。它會佔用文本的空間,但不顯示文本,同樣的事情發生在進一步插入,任何想法爲什麼會發生這種情況?RecyclerView不顯示第二個插入的項目

public class MessagesAdapter extends RecyclerView.Adapter<MessagesAdapter.ViewHolder> { 
private ArrayList<MessagesData> mDataset; 
private Context context; 
public MessagesAdapter(Context context, ArrayList<MessagesData> myDataset) { 
    this.mDataset=myDataset; 
    this.context=context; 
} 

public class ViewHolder extends RecyclerView.ViewHolder { 
    // each data item is just a string in this case 
    public TextView textViewMsg; 
    public TextView textViewDay; 
    public TextView textViewTime; 

    public ViewHolder(View view) { 
     super(view); 
     textViewMsg = (TextView) view.findViewById(R.id.mes); 
    } 
} 


// Create new views (invoked by the layout manager) 
@Override 
public MessagesAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, 
                int viewType) { 
    // create a new view 
    View v = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.mesage, parent, false); 
    // set the view's size, margins, paddings and layout parameters 

    ViewHolder vh = new ViewHolder(v); 
    return vh; 
} 

// Replace the contents of a view (invoked by the layout manager) 
@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 

    Log.d("here",mDataset.get(position).getMessage()); 
    holder.textViewMsg.setText(mDataset.get(position).getMessage()); 

} 

// Return the size of your dataset (invoked by the layout manager) 
@Override 
public int getItemCount() { 
    return mDataset.size(); 

} 
} 

在日誌中onBindViewHolder顯示每插入正確的結果,但只是不設置從第二插入文本。

在這張圖片中,你好,你是我發送的第一條消息之後,我發了很多三條消息,因此第一條消息下面的空白。

In this Image ,Hi how are you was the first message I sent, after that I sent three messages hence the blank space below the first message

+0

分享您的代碼,其中包含代碼來填充和更新數組''RecyclerView' – Beena

+0

設置'recyclerView'上方'EditText' .. – Sanoop

+0

在佈局XML文件在recyclerview android:layout_height - 你有wrap_content,或match_parent。如果wrap_content,那麼這是問題 –

回答

0

對不起,這是個愚蠢的問題,正如@sanoop在評論中所說的那樣,我只需將所有消息滾動到現在就可以。

0

嘗試插入一個新的項目到RecyclerView後使用notifyDataSetChanged()您的適配器上。

+0

我試過了,也試過mAdapter.notifyItemInserted(myDataset.size() - 1);相同的結果。 –

+1

您是否看到** onBindViewHolder()**中的** Log **語句記錄的第二條消息? –

+0

登錄onBindViewHolder正在執行,這意味着適配器正在被調用。 –