1

Trying to implement a grid view inside a fragment using adapter

The app keeps crashing when the activity containing this fragment is selected. I think that the problem is in this line.

MainAdapter adapter = new MainAdapter(getContext(),number,numberimage);

I am new to working with fragments. When i tried the same adapter in an activity it worked. here instead of using getContext what should i use?

Code for reference

fragment layout page

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".VisionFragment">

<GridView
    android:id="@+id/gv"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:numColumns="2"/>

Fragment java code

public class VisionFragment extends Fragment {

GridView gridView;
String[] number = {"ONE","TWO","THREE","FOUR","FIVE","SIX"};
int[] numberimage = {R.drawable.one,R.drawable.two,R.drawable.three,R.drawable.four,R.drawable.five,R.drawable.six};


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view=inflater.inflate(R.layout.fragment_vision, container, false);
    gridView=view.findViewById(R.id.gv);

    MainAdapter adapter = new MainAdapter(getContext(),number,numberimage);
    gridView.setAdapter(adapter);
    return view;
}

}

Adapter

public class MainAdapter extends BaseAdapter {

private Context context;
private LayoutInflater inflater;
private String[] number;
private int[]numberimage;

public MainAdapter(Context c, String[] number, int[] numberimage){
    context = c;
    this.number = number;
    this.numberimage = numberimage;
}
@Override
public int getCount() {
    return number.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(number[position]);
    return convertView;
}

}

0 Answers0