簡體   English   中英

如何比較 Android 中的兩個日期

[英]How to compare two dates in Android

我在 android 工作室中使用 firebase 創建了一個聊天應用程序,我的所有活動都正常工作,期待我的日期顯示,

如果日期相同,我想立即設置日期,否則如果與上一個日期不同,則顯示新日期,我試圖設置但它顯示一些錯誤

Process: com.example.registration, PID: 13007
    java.lang.ArrayIndexOutOfBoundsException: length=10; index=-1
        at java.util.ArrayList.get(ArrayList.java:439)
        at com.example.registration.myadapter.onBindViewHolder(myadapter.java:49)
        at com.example.registration.myadapter.onBindViewHolder(myadapter.java:19)
        at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7065)
        at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7107)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6012)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6279)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
        at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
       

這是錯誤

我獲取當前日期

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
String currentDate = sdf.format(new Date());

然后使用 Button.OnclickListner 將其提供給 chat.java

 sendmsg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String textmsg=inputmsg.getText().toString();
                if(!textmsg.equals("")){
                    sendmessage(firebaseUser.getUid(),userref,textmsg,currentDate,currenttime);

                }
                else{
                    Toast.makeText(chatscreen.this, "ENTER SOMETHING TO SEND MESSAGE", Toast.LENGTH_SHORT).show();
                }
                inputmsg.setText("");
            }
        });

這是我的適配器

    @Override
    public void onBindViewHolder(@NonNull @NotNull myadapter.ViewHolder holder, int position) {
        Chat name=values.get(position);
        Chat pname=values.get(position - 1);//line 49
        holder.txtmsg.setText(name.getMessage());
//        holder.date.setText(name.getDate());
        if(!name.getDate().equals(pname.getDate())) {
            holder.time.setText(name.getTime());
        }
        else{
            holder.date.setVisibility(View.INVISIBLE);
        }
        if(position==values.size()-1){
            if(name.getIsseen()){
                holder.textseen.setText("SEEN");
            }
            else{
                holder.textseen.setText("DELIVERED");
            }
        }

    }
    @Override
    public int getItemCount() {
        return values.size();
    }
    public static class ViewHolder extends RecyclerView.ViewHolder {
        public TextView txtmsg;
        public TextView date;
        public TextView time;
        public TextView textseen;
        public View log;
        public ViewHolder(@NonNull @NotNull View itemView) {
            super(itemView);
            txtmsg=(TextView) itemView.findViewById(R.id.usermsg);
            date=(TextView) itemView.findViewById(R.id.date);
            time=(TextView) itemView.findViewById(R.id.time);
            textseen=(TextView) itemView.findViewById(R.id.isseen);

        }
    }

有人知道怎么修這個東西嗎?

對於RecyclerView中的第一項, position將為0這使得position - 1 = -1這是一個無效索引,因此異常,在onBindViewHolder檢查 Z4757FE07FD492A8BE60EA6A760D63 之前的-1 position > 0

@Override
public void onBindViewHolder(@NonNull @NotNull myadapter.ViewHolder holder, int position) {
    Chat name=values.get(position);
    holder.txtmsg.setText(name.getMessage());  
    if(position > 0)
         Chat pname=values.get(position - 1);
         if(!name.getDate().equals(pname.getDate())) {
              holder.time.setText(name.getTime());
         }else{
              holder.date.setVisibility(View.INVISIBLE);
         }
     }  
     if(position==values.size()-1){
        if(name.getIsseen()){
            holder.textseen.setText("SEEN");
        }else{
            holder.textseen.setText("DELIVERED");
        }
     }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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