帮我看看这个列表页面为什么闪退(语言-java)

点击下面可以下载源码
简单说一下,就是我写了个列表页面,会闪退,大家帮忙看看为什么。我是按照这个软件一个人发的帖子,照抄的。不知道为什么错误,一下是相关代码
formula_item.xml


<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="80dp">

    <ImageView
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:id="@+id/formula_image"
        android:src="@drawable/oll1"/>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="80dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Name"
            android:textSize="25sp"
            android:textColor="#FF000000"
            android:id="@+id/formula_name"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="detailed"
            android:id="@+id/formula_detailed"/>

    LinearLayout>

LinearLayout>

activity_main.xml


<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:background="#FF1785E3"
        android:gravity="center">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="公式集"
            android:textColor="#FF000000"
            android:textSize="25sp"/>

    LinearLayout>

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/list_view"/>

LinearLayout>

MainActivity.java

package com.mycompany.application;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    ListView listView;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        listView = findViewById(R.id.list_view);
        
        List formulalist = new ArrayList<>();
        
        for (int i = 0; i < 2 ; i++) {
            addlist oll1 = new addlist(R.drawable.oll1, "OLL1", "(RU'U')(R2'FRF')U2(R'FRF')");
            formulalist.add(oll1);
        }
        
        listadapter adapter=new listadapter(MainActivity.this, R.layout.formula_item, formulalist);
        listView.setAdapter(adapter);
    }
    
    
    
}


listadapter.java

package com.mycompany.application;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.widget.ArrayAdapter;
import androidx.annotation.NonNull;
import android.content.Context;

public class listadapter extends ArrayAdapter {
    
    public listadapter(@NonNull Context context, int resource, @NonNull List objects) {
        super(context, resource, objects);
    }
    
    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        addlist formula=getItem(position);//得到当前项的 Fruit 实例
        //为每一个子项加载设定的布局
        View view=LayoutInflater.from(getContext()).inflate(R.layout.formula_item, parent, false);
        //分别获取 image view 和 textview 的实例
        ImageView formulaimage = view.findViewById(R.id.formula_image);
        TextView formulaname = view.findViewById(R.id.formula_name);
        TextView formuladetailed = view.findViewById(R.id.formula_detailed);
        // 设置要显示的图片和文字
        formulaimage.setImageResource(formula.getImageID());
        formulaname.setText(formula.getName());
        formuladetailed.setText(formula.getDetailed());
        return view;
    }
    
}


addlist.java

package com.mycompany.application;

public class addlist {
    
    private int imageID;
    private String name;
    private String detailed;

    public int getImageID() {
        return imageID;
    }
    public String getName() {
        return name;
    }
    public String getDetailed() {
        return detailed;
    }
    public addlist(int imageID, String name, String detailed) {
        this.imageID = imageID;
        this.name = name;
        this.detailed = detailed;
    }
    
}


你的 MainActivity 的 oncreate,没有在 super.oncreate 的下面调用 setContentView(R.layout.activity_main)。

所以,你需要设置一下布局 setContentView,才能调用 findViewById