«void android.widget.TextView.setText (java.lang.CharSequence)» для ссылки на пустой объект Adapter.Messageadapter.onBindViewHolder - PullRequest
0 голосов
/ 19 октября 2019

Я получаю:

Попытка вызвать виртуальный метод '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 выбрал это сообщение, но оно не отображается.

1 Ответ

0 голосов
/ 19 октября 2019

Здесь ((ViewHolder) держатель) .show_message.setText (chat.getMessage ());вы применяете базовый держатель представления рециркулятора, а не держатель представления

, вместо этого сделайте его таким ((UserAdapter.ViewHolder) .show_message.setText (chat.getMessage ());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...