【问题标题】:'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference Adapter.Messageadapter.onBindViewHolder'void android.widget.TextView.setText(java.lang.CharSequence)' 在空对象引用 Adapter.Messageadapter.onBindViewHolder
【发布时间】:2020-02-16 10:11:18
【问题描述】:

我得到:

尝试调用虚方法'void android.widget.TextView.setText(java.lang.CharSequence)' 为空 对象引用

此错误出现在崩溃开始时。 这是我第一次遇到这种类型的错误

public class Messageadapter extends RecyclerView.Adapter {

    private static final int MSG_TYPE_LEFT=0;
    private static final int MSG_TYPE_RIGHT=1;

    private Context mContext;
    private List<Chat> mChat;
    private String imageurl;

    FirebaseUser fuser;

    public Messageadapter(Context mContext, List<Chat> mChat,String imageurl) {
        this.mContext=mContext;
        this.mChat=mChat;
        this.imageurl=imageurl;
    }

    @NonNull
    @Override
    public Messageadapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        if(viewType==MSG_TYPE_RIGHT){
        View view= LayoutInflater.from(mContext).inflate(R.layout.chat_item_right,parent,false);
        return new Messageadapter.ViewHolder(view);
        }else {
            View view= LayoutInflater.from(mContext).inflate(R.layout.chat_item_left,parent,false);
            return new Messageadapter.ViewHolder(view);
        }
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        Chat chat=mChat.get(position);
        ((ViewHolder) holder).show_message.setText(chat.getMessage());///////Error is said on this line/////////////////
        ((UserAdapter.ViewHolder) holder).profile_image.setImageResource(R.mipmap.ic_launcher);
    }

    @Override
    public int getItemCount() {
        return mChat.size();
    }
    public class ViewHolder extends RecyclerView.ViewHolder{

        public TextView show_message;
        public ImageView profile_image;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);

            show_message=itemView.findViewById(R.id.show_message);
            profile_image=itemView.findViewById(R.id.profileimage);
        }
    }

    @Override
    public int getItemViewType(int position) {
        fuser= FirebaseAuth.getInstance().getCurrentUser();
        if(mChat.get(position).getSender().equals(fuser.getUid())){
            return MSG_TYPE_RIGHT;
        }
        else {
            return MSG_TYPE_LEFT;
        }
    }
}

我希望这个Viewholder 选择这条消息,但它没有显示。

【问题讨论】:

  • 请分享 chat_item_right 和 chat_item_left 布局 xml 文件

标签: java android android-studio android-layout android-intent


【解决方案1】:

这里 ((ViewHolder) holder).show_message.setText(chat.getMessage()); 您正在铸造基本回收器视图支架而不是您的视图支架

改为这样 ((UserAdapter.ViewHolder).show_message.setText(chat.getMessage());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2020-06-16
    相关资源
    最近更新 更多