为什么我在尝试引用 Textview 时得到 NPE

Why am i getting an NPE when i trying to reference a Textview

我正在 android studio 中编写一个时间表应用程序,我希望将星期几的第一个字母作为图像视图,并将实际日期存储在一个字符串中以显示在旁边图片视图。我正在为此使用 cardviews。不幸的是,我收到一个 NPE“尝试在第 103 行的空对象引用上调用虚拟方法 'void.android.widget.textview.setText(java.lang.charsequence)',该引用具有 holder.tvWeek.setText(week[position]); . 这是我的代码

public class weekActivity extends AppCompatActivity {
    private Toolbar toolbar;
    private ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_week);

        setUIViews();
        initToolbar();
        setupListView();
    }

    private void setUIViews() {
        toolbar = findViewById(R.id.ToolBarWeek);
        listView = findViewById(R.id.tvWeek);
    }

    private void initToolbar() {
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("WEEK");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

    private void setupListView() {
        String[] week = getResources().getStringArray(R.array.week);
        WeekAdapter adapter = new WeekAdapter(this, R.layout.activity_week_single_item, week);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                switch (i) {
                    case 0:
                        break;
                    case 1:
                        break;
                    case 2:
                        break;
                    case 3:
                        break;
                    case 4:
                        break;
                    case 5:
                        break;
                    case 6:
                        break;
                    default:
                        break;
                }
            }
        });
    }

    public class WeekAdapter extends ArrayAdapter {
        private int resource;
        private LayoutInflater layoutInflater;
        private String[] week = new String[]{};

        public WeekAdapter(Context context, int resource, String[] objects) {
            super(context, resource, objects);
            this.resource = resource;
            this.week = objects;

            layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            viewHolder holder;
            if (convertView == null) {
                holder = new viewHolder();
                convertView = layoutInflater.inflate(resource, null);
                holder.ivLogo = (LetterImageView) convertView.findViewById(R.id.ivLetter);
                holder.tvWeek = (TextView) convertView.findViewById(R.id.tvMain);
                convertView.setTag(holder);
            } else {
                holder = (viewHolder) convertView.getTag();
            }
            holder.ivLogo.setOval(true);
            holder.ivLogo.setLetter(week[position].charAt(0));
            holder.tvWeek.setText(week[position]);

            return convertView;
        }

        class viewHolder {
            private LetterImageView ivLogo;
            private TextView tvWeek;
        }
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {

            case android.R.id.home: {
                onBackPressed();
            }
        }

        return super.onOptionsItemSelected(item);
    }
}

holder.tvWeek = (TextView);
convertView.findViewById(R.id.tvMain);

tvMain 更改为 tvWeek