GetContext (). Error getSystemService

So, I'm just trying to inflate the view in my getView function, and getContext () for some reason says it's undefined ..

package com.MTSUAndroid; import com.MTSUAndroid.Alarm_Settings.EfficientAdapter1.ViewHolder; import android.app.Activity; import android.app.AlertDialog; import android.app.ListActivity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.ImageView; import android.graphics.BitmapFactory; import android.graphics.Bitmap; public class Alarm_Settings extends ListActivity { public static class EfficientAdapter1 extends BaseAdapter{ private LayoutInflater mInflater; public EfficientAdapter1(Context context){ mInflater = LayoutInflater.from(context); } @Override public int getCount() { // TODO Auto-generated method stub return 0; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; int viewType = this.getItemViewType(position); switch (viewType) { case 1: holder = new ViewHolder(); View v = convertView; if (v == null) { LayoutInflater vi = null; //LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(R.layout.alerts,parent,false); holder.text1 = (TextView)v.findViewById(R.id.menu_Cancel); v.setTag(holder); } else { holder = (ViewHolder)v.getTag(); } return v; case 2: ViewHolder holder1 = new ViewHolder(); View v1 = convertView; if (v1 == null) { LayoutInflater vi = null; //LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); v1 = vi.inflate(R.layout.about, parent, false); holder1.text1 = (TextView)v1.findViewById(R.id.menu_Cancel); v1.setTag(holder1); } else { holder1 = (ViewHolder)v1.getTag(); } return v1; } return null; } static class ViewHolder{ TextView text1; } } public void onCreate(Bundle SavedInstanceState) { super.onCreate(SavedInstanceState); setListAdapter(new EfficientAdapter1(this)); ListView listview = getListView(); listview.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(Alarm_Settings.this, Alerts.class); startActivity(intent); } }); } } 

This is part of the code I'm having problems with. LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); getContext () is not defined for the class, and I do not understand why: (

+4
source share
4 answers

You call it in the EfficientAdapter1 class, which does not expand activity and does not have such a method.

Add the Context field to the inner class and call getSystemService on it:

 /* snip */ public static class EfficientAdapter1 extends BaseAdapter{ private LayoutInflater mInflater; private Context ctx; public EfficientAdapter1(Context context){ mInflater = LayoutInflater.from(context); ctx = context; } /* snip */ LayoutInflater vi = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); /* snip */ 
+9
source

getContext () is not a method on the BaseAdapter. Save the context provided to you in the constructor in a member variable and just use that.

0
source

The BaseAdapter used, so you cannot use

 getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

In the case of the ArrayAdapter you can use it as follows:

 LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

Pass Context as a parameter in the inner class, and then use it where you need it.

0
source

If you do not need access to the base adapter from other actions, you can replace getContext () with Alarm_Settings.this

0
source

All Articles