Reputation: 25
I have a ListView
and I'm trying to go to GridView
OnItemCLiclick listener. I have an exception on the adapter put I can't solve it.
The list view is a fragment and it works very well!
The exception is:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup)' on a null object reference at com.rt_no.myprogect.ui.adapter.CareerImageAdapter.getView(CareerImageAdapter.java:52)
at this line in the GridView
adapter:
convertView = layoutInflater.inflate(R.layout.career_grid_view, null);
The ListView:
public class CitiesFragment extends Fragment {
private static final String TAG ="CitiesFragment";
private ListView cityList;
private ArrayList<City> cities;
private CitiesAdapter citiesAdapter;
private CitiesFragmentListener listener;
private Context context;
private GridView gridView;
@Override
public void onAttach(Context context) {
super.onAttach(context);
Log.d(TAG, "onAttach_CitiesFragment");
listener = (CitiesFragmentListener) context;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d(TAG, "onCreateView_CitiesFragment");
View view = inflater.inflate(R.layout.cities_list_view_fragment, null);
return view;
}
private ArrayList<City> initCities(){.....}
private void initGridView(Fragment fragment){
Log.d(TAG, "CitiesFragment_initGridView");
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.container,fragment);
fragmentTransaction.addToBackStack("fragment");
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragmentTransaction.commit();
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Log.d(TAG, "onViewCreated_CitiesFragment");
cities = initCities();
cityList = (ListView) view.findViewById(R.id.cityList);
citiesAdapter = new CitiesAdapter(getActivity(), cities);
cityList.setAdapter(citiesAdapter);
cityList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d(TAG, "onItemClick_CitiesFragment position : " + cities.get(position).getCityName());
GridViewFragment fragment = new GridViewFragment();
initGridView(fragment);
}
});
}
The GridView:
public class GridViewFragment extends Fragment {
private static final String TAG = "GridViewFragment";
private CitiesFragmentListener listener;
private GridView gridView;
private CareerImageAdapter careerImageAdapter;
private int position;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
Log.d(TAG, "onCreateView_GridViewFragment");
View view = inflater.inflate(R.layout.career_grid_view, null);
gridView = (GridView) view.findViewById(R.id.careerGridView);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Log.d(TAG, "onViewCreated_GridViewFragment");
gridView = (GridView) view.findViewById(R.id.careerGridView);
gridView.setAdapter(new CareerImageAdapter(getActivity()));
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d(TAG, "onItemClick_GridViewFragment position : " + position);
// go to workers_list_view_fragment layout
}
});
}
The GridView Adapter:
public class CareerImageAdapter extends BaseAdapter {
private static final String TAG = "CareerImageAdapter";
private Context mContext;
private LayoutInflater layoutInflater;
public CareerImageAdapter (Context c){
mContext = c;
}
@Override
public int getCount() {
return ImageIdes.length;
}
@Override
public CareerImageAdapter getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView ;
if (convertView == null){
convertView= layoutInflater.inflate(R.layout.career_grid_view, null);
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(180, 180));
imageView.setScaleType(ImageView.ScaleType.FIT_END);
imageView.setPadding(8, 8, 8, 8);
}else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(ImageIdes[position]);
return convertView;
}
private Integer[] ImageIdes =
{
R.drawable.afar,R.drawable.asbaka,R.drawable.bnya,
R.drawable.cnstractors,R.drawable.doors,R.drawable.etom,
R.drawable.floring,R.drawable.foxy,R.drawable.garnolet,
R.drawable.gaz,R.drawable.geves,R.drawable.ginoon,
R.drawable.halbashateven,R.drawable.hashmal,R.drawable.instltsya,
R.drawable.kvesatshatyah,R.drawable.mazgan,R.drawable.meshlowah,
R.drawable.pargolot,R.drawable.pegom,R.drawable.pinoyafpa,
R.drawable.robah,R.drawable.tyah,
};
}
Upvotes: 0
Views: 4987
Reputation: 1016
layoutInflater
is never initialized. Add this in the CareerImageAdapter
constructor:
layoutInflater = LayoutInflater.from(c);
Upvotes: 3