簡體   English   中英

Android 片段和適配器問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM