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

    gridView = findViewById(R.id.grid_view);

    MainAdapter adapter = new MainAdapter(MainActivity.this,numberWord,numberImage);
    gridView.setAdapter(adapter); //Error showing to this line

//Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.GridView.setAdapter(android.widget.ListAdapter)' on a null object reference

I used in build.gradle(:app)

implementation 'androidx.gridlayout:gridlayout:1.0.0'

My MainAdapter.java code are as follows: public class MainAdapter extends BaseAdapter {

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;
}

}

And row_item.xml is :

<?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>

   

1 Answers1

0

You will need to add some more information about youre MainAdapter class and XML's in order to get a better answer.

take a look at my example Adapter and row layOut I hope it would help :

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;
    }
}

row.xml

<?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>
nadav
  • 1
  • 3
  • Thanks a lot for your answer. My codes are similar to your answer. I have added my MainAdapter code and row_item.xml with the amin question above. Thanks – Md. Imran Hossain Nov 02 '20 at 05:34