2010-12-01 4 views
15

Я пытался написать обычай ArrayAdapter ссылки here Моего кодаAndroid getSystemService внутри пользовательского ArrayAdapter

package com.example.AndTest; 

import java.util.ArrayList; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 

public class CategoryAdapter extends ArrayAdapter<Category> { 
    private ArrayList<Category> items; 

    public CategoryAdapter(Context context, int textViewResourceId, 
      ArrayList<Category> items) { 
     super(context, textViewResourceId, items); 
     this.items = items; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View v = convertView; 
     if (v == null) { 
      LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.list, null); 
     } 
     Category c = items.get(position); 
     if (c != null) { 
      TextView itemId = (TextView) v.findViewById(R.id.itemid); 
      TextView itemLabel = (TextView) v.findViewById(R.id.itemlabel); 
      if (itemId != null) { 
       itemId.setText("Name: " + c.getId()); 
      } 
      if (itemLabel != null) { 
       itemLabel.setText("Status: " + c.getTitle()); 
      } 
     } 
     return v; 
    } 
} 

Но я получаю сообщение об ошибке на линии LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

The method getSystemService(String) is undefined for the type CategoryAdapter

Я что-то пропустил ..

public class Category implements Parcelable { 
.... 
} 

ответ

76
getSystemService

является метод Context класса, поэтому постарайтесь, чтобы получить Context объект первым:

LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
+4

Великий ответ !! ! – 2010-12-01 05:33:29