Classmaper Не найден установщик для ключа, созданного нажатием - PullRequest
0 голосов
/ 20 апреля 2019

Я хочу отображать сообщения группового чата в своем обзоре, но у меня есть это предупреждение в logcat Я много искал эту ошибку, я не мог найти правильное решение ...

Модельный класс

public class Groups {
    private String groupName;
    private String Admin;
    private String push_id;
    public MessageG messageG;

    public Groups() {
    }

    public Groups(String groupName, String Admin, String push_id, MessageG messageG) {
        this.groupName = groupName;
        this.Admin = Admin;
        this.push_id = push_id;
        this.messageG = messageG;
    }

    public String getGroupName() {
        return groupName;
    }

    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }

    public String getAdmin() {
        return Admin;
    }

    public void setAdmin(String admin) {
        Admin = admin;
    }

    public String getPush_id() {
        return push_id;
    }

    public void setPush_id(String push_id) {
        this.push_id = push_id;
    }

    public MessageG getMessageG() {
        return messageG;
    }
    public void setMessageG(MessageG messageG) {
        this.messageG = messageG;
    }
    }

Для ребенка:

public class MessageG
{
    public String id;
    public String name;
    public String userid;
    public String msg;
    public String date;
    public long time;

    public MessageG() {}

    public MessageG(String id, String name, String userid, String msg, String date, long time) {
        this.id = id;
        this.name = name;
        this.userid = userid;
        this.msg = msg;
        this.date = date;
        this.time = time;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUserid() {
        return userid;
    }

    public void setUserid(String userid) {
        this.userid = userid;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public long getTime() {
        return time;
    }

    public void setTime(long time) {
        this.time = time;
    }
    }

Слушатель кнопки (отправить сообщение):

btn_send_message.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                String message = text_send.getText().toString();
                if(message.equals(""))
                {
                    Toast.makeText(GroupChatActivity.this, "Empty !", Toast.LENGTH_SHORT).show();
                }
                else
                    {
                    //SendMessageInfoToDatabase();
                     GroupNameRef = FirebaseDatabase.getInstance().getReference("Groups").child("Messages");
                     String id = GroupNameRef.push().getKey();

                        //---GET DATE

                        Calendar calForDate = Calendar.getInstance();

                        SimpleDateFormat currentDateFormat = new SimpleDateFormat("MMM dd, yyyy");

                        currentDate = currentDateFormat.format(calForDate.getTime());
                        //---------------------

                        //--- the time
                        Calendar calForTime = Calendar.getInstance();

                        SimpleDateFormat currentTimeFormat = new SimpleDateFormat("hh:mm");
                        currentTime = currentTimeFormat.format(calForTime.getTime());
                        //---------------------



                        assert id != null;
                        GroupMessageKeyRef = GroupNameRef.child(id);

                        Map<String, Object> messageInfoMap = new HashMap<>();
                        messageInfoMap.put("id", id);
                        messageInfoMap.put("name", CurrentUserName);
                        messageInfoMap.put("userid", fuser.getUid());
                        messageInfoMap.put("msg", message);
                        messageInfoMap.put("date", currentDate);
                        messageInfoMap.put("time", currentTime);

                        GroupMessageKeyRef.setValue(messageInfoMap);
                        text_send.setText("");

                    }
            }
        });

Мой адаптер:

public class GroupMessageAdapter extends RecyclerView.Adapter<GroupMessageAdapter.GroupMessageViewHolder>
{
    public static final int MSG_RECEIVERS = 1;
    public static final int MSG_SENDER = 0;

    private List<Groups> mMessageList;
    private Context mContext;

    public GroupMessageAdapter(List<Groups> mMessageList, Context mContext) {
        this.mMessageList = mMessageList;
        this.mContext = mContext;
    }

    @NonNull
    @Override
    public GroupMessageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
    {
        if(viewType == MSG_SENDER)
        {
            View view = LayoutInflater.from(mContext).inflate(R.layout.chat_item_sender, parent, false);
            GroupMessageViewHolder gmvh = new GroupMessageViewHolder(view);
            return gmvh;
        }
        else
        {
            View view = LayoutInflater.from(mContext).inflate(R.layout.chat_item_receivers, parent, false);
            GroupMessageViewHolder gm = new GroupMessageViewHolder(view);
            return gm;
        }
    }

    public class GroupMessageViewHolder extends RecyclerView.ViewHolder
    {
        private TextView messages_textView;
        public GroupMessageViewHolder(@NonNull View itemView)
        {
            super(itemView);
            messages_textView = itemView.findViewById(R.id.group_chat_text_display);
        }
    }

    @Override
    public void onBindViewHolder(@NonNull final GroupMessageViewHolder groupMessageViewHolder, int position)
    {
        Groups groups = mMessageList.get(position);
        groupMessageViewHolder.messages_textView.setText(groups.getMessageG().getMsg());
    }
    @Override
    public int getItemCount()
    {
        return mMessageList.size();
    }

    @Override
    public int getItemViewType(int position)
    {
        FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
        assert firebaseUser != null;
        if(mMessageList.get(position).getMessageG().getUserid().equals(firebaseUser.getUid()))
        {
            return MSG_SENDER;
        }
        else
        {
            return MSG_RECEIVERS;
        }
    }
    }

Ошибка:

W / ClassMapper: не найден сеттер / поле для (KEY генерируется нажатием) класс

Моя база данных:

введите описание изображения здесь

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