[英]Android Fragment and Adapter issue
我已經制作了一個示例聊天布局,它只是將 EditText 輸入添加到 RecyclerView,但是正如您在這張圖片中看到的第五個項目之后它不能正常工作(數字是 EditText 輸出)
片段 class =>
Boolean me = true ;
Boolean seen = false ;
@Override
public void onClick(View view) {
if (view.getId() == R.id.send_button) {
me = !me ;
seen = !seen ;
sendMessage();
}
}
private void sendMessage(){
String editTextString = editText.getText().toString() ;
Calendar calendar = Calendar.getInstance() ;
String time = calendar.get(Calendar.HOUR) + ":" + calendar.get(Calendar.MINUTE) ;
first_message.setVisibility(View.GONE);
if (editTextString.equals("")){
return;
}
E08Object object = new E08Object();
object.setMessage(editText.getText().toString());
object.setDate(time);
object.setMe(me);
object.setSeen(seen);
list.add(object) ;
adapter.notifyDataSetChanged();
fragment_recyclerView.smoothScrollToPosition(list.size());
editText.setText("");
}
適配器 class =>
@Override
public void onBindViewHolder(@NonNull VH holder, int position) {
holder.textView.setText(list.get(position).getMessage());
holder.timeTextVIew.setText(list.get(position).getDate());
if (!list.get(position).getMe()) {
holder.seenImage.setVisibility(View.GONE);
holder.fragmentParent.setBackground(ContextCompat.getDrawable(Application.getContext() , R.drawable.person_message_rounded));
}
}
請檢查。 當視圖被回收時,您必須在 bindViewHolder 內的 else 塊中重置值。
if (!list.get(position).getMe()) {
holder.seenImage.setVisibility(View.GONE);
holder.fragmentParent.setBackground(ContextCompat.getDrawable(Application.getContext() , R.drawable.person_message_rounded));
} else {
holder.seenImage.setVisibility(View.VISIBLE);
holder.fragmentParent.setBackground(ContextCompat.getDrawable(Application.getContext() , R.drawable.THE_DEFAULT_DRAWABLE));
}
如果此問題是由於回收造成的,這應該會有所幫助。 讓我知道這是否有幫助。 此外,最好附加項目布局和回收站布局。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.