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

标签 java android locale simpledateformat

我正在制作一个 Memo android 应用程序,其中每个列表项通过从 ArrayList<Long> 检索它来显示在 TextView 中上次修改的日期。其值使用 new Date(noteDates.get(position)) 进行转换在 RecyclerView 的适配器内。但是当我运行该应用程序时,它会抛出 java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long并指向我的 Adapter 类中的以下代码:

@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 的 View 持有者:

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);
    }
}

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

最佳答案

天哪,我刚刚想通了!我将列表项保存在 Json 文件中,并且我有旧的日期项,它们不是长整数,而是字符串。我删除了应用程序数据,一切又恢复正常了!

关于java - 使用 SimpleDateFormat 格式化日期时抛出 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57100560/

相关文章:

java - 是否可以使用 Wicket 创建离线应用程序?

android - 在 OpenGL 和分割中滚动/缩放场景

java - Java 有专门的语言类吗?

java - struts的ActionForm和使用trim()

java - 如何以最少的查询次数获取所有多对多关系?

java - 为什么我们在 JBoss AS 7 中定义驱动程序模块时要指定依赖项?

java - 我的代码有什么问题吗? (java.lang.NullPointerException)

android - 无论如何创建一个后台进程服务,无论创建它的应用程序是否仍在运行,该服务都会运行?

postgresql - 如何在postgresql中获得比给定字符大的最接近字符?

macos - 在 Mac OSX 中添加区域设置