使用 SimpleDateFormat 格式化日期时抛出 ClassCastException

ClassCastException thrown when using SimpleDateFormat to format a Date

我正在制作一个备忘录 android 应用程序,其中每个列表项显示最后一次在 TextView 中修改的日期,方法是从 ArrayList<Long> 中检索它,其值使用 [=14= 转换] 在 RecyclerView 的适配器中。但是当我 运行 应用程序时,它抛出 java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long 并指向我的适配器中的以下代码 class:

@Override
public void onBindViewHolder(@NonNull NoteViewHolder holder, int position) {
    if (position == noteContents.size()) {
        //working code
    } else {
        holder.title.setText(noteTitles.get(position));
        holder.content.setText(noteContents.get(position));
        holder.date.setText(new SimpleDateFormat("yyyy/MM/DD", MainActivity.appLocale).format(new Date(noteDates.get(position)))); //here is the problem.
        holder.picture.setVisibility(View.GONE);
    }
}

其中 MainActivity.appLocale 指向我使用以下代码设置的当前语言环境:

public class MainActivity extends AppCompatActivity {
    //other codes
    public static Locale appLocale;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //other codes
        Configuration conf = getResources().getConfiguration();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) appLocale = conf.getLocales().get(0);
        else appLocale = conf.locale;
        //other codes
    }
    //other codes
}

而 NoteViewHolder 是 Adapter 的视图持有者:

public static class NoteViewHolder extends RecyclerView.ViewHolder {

    MaterialCardView noteCard;
    TextView title;
    TextView content;
    TextView date;
    ImageView picture;

    NoteViewHolder(View itemView) {
        super(itemView);
        noteCard = (MaterialCardView) itemView.findViewById(R.id.noteCard);
        title = (TextView) itemView.findViewById(R.id.dialogTitle);
        content = (TextView) itemView.findViewById(R.id.content);
        date = (TextView) itemView.findViewById(R.id.date);
        picture = (ImageView) itemView.findViewById(R.id.picture);
    }
}

请注意,在将日期算法考虑在内之前,所有这些代码都可以正常工作。 这个问题有什么解决办法吗?提前致谢。

holder.date.setText(new SimpleDateFormat("yyyy/MM/DD", MainActivity.appLocale).format(new Date(noteDates.get(position)))); //here is the problem.

这条线下

noteDates.get(position) -> Return String is issue

返回字符串值,

但应该很长。

例如new Date(7393265965);

天哪,我终于明白了!我将我的列表项保存在一个 Json 文件中,并且我有旧的日期项目,这些项目不是长的,而是字符串。我删除了应用数据,然后一切又恢复正常了!