【问题标题】:Null pointer Exception android: void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference [duplicate]空指针异常android:空对象引用上的void android.widget.TextView.setText(java.lang.CharSequence)'[重复]
【发布时间】:2019-06-06 16:48:01
【问题描述】:

我正在从 JSON 文件中获取数据,并且我必须根据日期对这些数据进行分组。例如,6 月 6 日期间发生的所有活动都列在其下方。即 6 月 6 日是标题,所有发生的事件都被列为偶数。

我的问题是,当我尝试将这些日期转换为某种格式时,我遇到了空指针异常。

有两种布局,一种用于具有日期的标题,另一种用于事件。我正在尝试在适配器的onBindViewHolder 方法中将日期设置为标题布局。那里我得到空指针异常

谢谢

@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
    switch (viewHolder.getItemViewType()) {
        case ListItem.TYPE_HEADER:

            HeaderItem dateItem = (HeaderItem) consolidatedList.get(i);
            HeaderViewHolder dateViewHolder = (HeaderViewHolder) viewHolder;
            String pattern = "yyyy-MM-dd";
            DateFormat df4 = new SimpleDateFormat("MM dd, yyyy");

            Date date = null;
            String str4 = null;
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
            try {
                 date = simpleDateFormat.parse(dateItem.getDate());
                 str4 = df4.format(date);

            } catch (ParseException e) {
                e.printStackTrace();
            }

            dateViewHolder.mDate.setText(str4);

            break;

        case ListItem.TYPE_EVENT:

            EventItem event = (EventItem) consolidatedList.get(i);
            EventViewHolder holder = (EventViewHolder) viewHolder;
            holder.mDate.setText(event.getStreamItem().getDate());
            holder.mDesc.setText(event.getStreamItem().getDesc());
            holder.mTitle.setText(event.getStreamItem().getTitle());

            String image = event.getStreamItem().getImage();

            if (image.contains("education_icon.png")) {

                holder.mImageView.setImageResource(R.drawable.boardofeducation);
            } else if (image.contains("legislature_icon.png")) {
                holder.mImageView.setImageResource(R.drawable.legislature);
            }
            break;
    }
}

//HeaderView 持有者

private static class HeaderViewHolder extends RecyclerView.ViewHolder {

        protected TextView mDate;

        public HeaderViewHolder(@NonNull View itemView) {
             super(itemView);
             TextView mDate = itemView.findViewById(R.id.date);
        }
    }

这是错误。

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
        at com.example.dipalbhandari.nebraskacapitollive.StreamArrayAdapter.onBindViewHolder(StreamArrayAdapter.java:97)

【问题讨论】:

  • 为您的 ViewHolder 添加代码
  • 嗯,mDate 好像为空,你能显示 ViewHolder 代码吗?
  • 我已经添加了代码。让我进一步了解

标签: java android nullpointerexception null


【解决方案1】:

更改此行TextView mDate = itemView.findViewById(R.id.date);

mDate = itemView.findViewById(R.id.date);

在视图持有者类中声明对象后,您应该正确初始化对象

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多