Android 在 class 上使用 "this" 的上下文不是 activity

Android context using "this" on class that is not an activity

我创建了以下 class 来填充 listView 两种不同的视图。包含的两种类型之一是微调器,我试图用捆绑包中包含的 Arraylists(每个微调器一个)填充它。我正在处理的问题是 ArrayAdapter 构造函数,它显然与我正在使用的上下文 ("this") 有问题。有什么想法吗?

public class InsertAdapter extends BaseAdapter {

private static final int OWN_KEY = 0;
private static final int FOREIGN_KEY = 1;
private ArrayList<ColumnProperties> columns = new ArrayList<ColumnProperties>();
private Bundle spinner_strings;

@Override
public int getViewTypeCount() {
    return 2;
}

@Override
public int getItemViewType(int position){
    return (columns.get(position).isForeign()) ? FOREIGN_KEY : OWN_KEY;
}

@Override
public int getCount() {
    return columns.size();
}

@Override
public Object getItem(int position) {
    return getItem(position);
}

@Override
public long getItemId(int position) {
    return position;
}

public View getView(int position, View view, ViewGroup parent) {
    int type = getItemViewType(position);
    if (view == null) {
        LayoutInflater inflater =
                LayoutInflater.from(parent.getContext());
        if(type==0) {
            view = inflater.inflate(
                    R.layout.text_field, parent, false);
        }else{
            view = inflater.inflate(
                    R.layout.text_spinner, parent, false);
        }
    }

    ColumnProperties column = columns.get(position);

    TextView col_name = (TextView) view.findViewById(R.id.column_name);
    col_name.setText(column.getName());

    if(type==FOREIGN_KEY){
        Spinner spinner = (Spinner) view.findViewById(R.id.foreign_keys);
        ArrayList<String> spinner_list = spinner_strings.getStringArrayList(column.getName());
        //List<String> list;

        ArrayAdapter spinner_adapter = new ArrayAdapter(this , android.R.layout.simple_spinner_item,spinner_list);
        spinner_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spinner.setAdapter(spinner_adapter);
    }

    return view;
}

public void getSpinnerStrings(Bundle spinner_strings){
    this.spinner_strings = spinner_strings;
}

}

@ρяσѕρєя K 写道:

Use view.getContext() or parent.getContext() instead of this