Java 尝试调用虚拟方法';void android.widget.GridView.setAdapter(android.widget.ListAdapter

Java 尝试调用虚拟方法';void android.widget.GridView.setAdapter(android.widget.ListAdapter,java,android,gridview,Java,Android,Gridview,//原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.GridView.setAdapter(android.widget.ListAdapter)” 我在build.gradle(:app)中使用了 My MainAdapter.java代码如下: 公共类MainAdapter扩展了BaseAdapter{ implementation 'androidx.gridlayout:gridlayout:1.

//原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.GridView.setAdapter(android.widget.ListAdapter)”

我在build.gradle(:app)中使用了

My MainAdapter.java代码如下: 公共类MainAdapter扩展了BaseAdapter{

implementation 'androidx.gridlayout:gridlayout:1.0.0'
}

而row_item.xml是:

private Context context;
private LayoutInflater inflater;
private String[] numberWord;
private int[] numberImage;

public MainAdapter(Context c,String[] numberWord,int[] numberImage) {
    context = c;
    this.numberWord = numberWord;
    this.numberImage = numberImage;

}

@Override
public int getCount() {

    return numberWord.length;
}

@Override
public Object getItem(int position) {

    return null;
}

@Override
public long getItemId(int position) {

    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (inflater == null) {
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    if (convertView == null) {
        convertView = inflater.inflate(R.layout.row_item,null);
    }

    ImageView imageView = convertView.findViewById(R.id.image_view);
    TextView textView = convertView.findViewById(R.id.text_view);

    imageView.setImageResource(numberImage[position]);
    textView.setText(numberWord[position]);
    return convertView;
}

为了得到更好的答案,您需要添加有关MainAdapter类和XML的更多信息

看看我的示例适配器和行布局,我希望它能有所帮助:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="20dp"
    android:gravity="center">
    
    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/image_view"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text_view"
        android:text="Numbers"
        android:textSize="25sp"
        android:layout_marginTop="5dp"/>
</LinearLayout>

   
row.xml

public class ExampleAdapter extends BaseAdapter {

private Context context;
private LayoutInflater layoutInflater;
private String[] numbersStr;
private int[] numberInt;

public ExampleAdapter(Context context, String[] numbersStr, int[] numberInt) {
    this.context = context;
    this.numbersStr = numbersStr;
    this.numberInt = numberInt;
}

@Override
public int getCount() {
    return numbersStr.length;
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (layoutInflater == null)
        layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        if (convertView == null)
            convertView = layoutInflater.inflate(R.layout.row, null);

        /*
        You could edit your image and textView here
         */
//        ImageView row_IMG_rowPic = convertView.findViewById(R.id.row_IMG_rowPic);
//        TextView row_LBL_number = convertView.findViewById(R.id.row_LBL_number);
//        
//        row_IMG_rowPic.setImageResource();
//        row_LBL_number.setText();

        return convertView;
    }
}


这是否回答了您的问题?gridView为空您是否在
R.layout.activity\u main
中有
R.id.grid\u视图
?请检查一下,因为gridView返回空值。非常感谢您的回答。我的代码与您的答案类似。我已经添加了我的MainAdapter代码和row\u item.xml以及上面的amin问题。谢谢
public class ExampleAdapter extends BaseAdapter {

private Context context;
private LayoutInflater layoutInflater;
private String[] numbersStr;
private int[] numberInt;

public ExampleAdapter(Context context, String[] numbersStr, int[] numberInt) {
    this.context = context;
    this.numbersStr = numbersStr;
    this.numberInt = numberInt;
}

@Override
public int getCount() {
    return numbersStr.length;
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (layoutInflater == null)
        layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        if (convertView == null)
            convertView = layoutInflater.inflate(R.layout.row, null);

        /*
        You could edit your image and textView here
         */
//        ImageView row_IMG_rowPic = convertView.findViewById(R.id.row_IMG_rowPic);
//        TextView row_LBL_number = convertView.findViewById(R.id.row_LBL_number);
//        
//        row_IMG_rowPic.setImageResource();
//        row_LBL_number.setText();

        return convertView;
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="20dp"
    android:gravity="center">

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/row_IMG_rowPic"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/row_LBL_number"
        android:text="number"
        android:textSize="25sp"
        android:layout_marginTop="5dp"/>

</LinearLayout>