Java 尝试调用虚拟方法';void android.widget.GridView.setAdapter(android.widget.ListAdapter
//原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.GridView.setAdapter(android.widget.ListAdapter)” 我在build.gradle(:app)中使用了 My MainAdapter.java代码如下: 公共类MainAdapter扩展了BaseAdapter{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.
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>