我正在尝试编写引用here的自定义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 {
....
}
答案 0 :(得分:78)
getSystemService
是Context
类的方法,因此请先尝试获取Context
对象:
LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
答案 1 :(得分:0)
您还可以使用View
类中的静态方法:
public static View inflate (Context context, int resource, ViewGroup root)