使用&QUOT Android的背景下,这"阶级不是一个活动 [英] Android context using "this" on class that is not an activity
本文介绍了使用&QUOT Android的背景下,这"阶级不是一个活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我创建了下面的类来填充的ListView
有两种不同的看法。其中两种含有的是包含在捆绑一个微调,而我试图用的ArrayList
来填充(每个微调)。我处理的问题是 ArrayAdapter
的构造函数,这显然与我使用的上下文(本)中的问题。任何想法?
公共类InsertAdapter延伸BaseAdapter {私有静态最终诠释OWN_KEY = 0;
私有静态最终诠释FOREIGN_KEY = 1;
私人的ArrayList< ColumnProperties>列=新的ArrayList< ColumnProperties>();
私人捆绑spinner_strings;@覆盖
公众诠释getViewTypeCount(){
返回2;
}@覆盖
公众诠释getItemViewType(INT位置){
返回(columns.get(位置).isForeign())? FOREIGN_KEY:OWN_KEY;
}@覆盖
公众诠释的getCount(){
返回columns.size();
}@覆盖
公共对象的getItem(INT位置){
返回的getItem(位置);
}@覆盖
众长getItemId(INT位置){
返回的位置;
}公共查看getView(INT位置,查看视图的ViewGroup父){
整型= getItemViewType(位置);
如果(查看== NULL){
LayoutInflater气筒=
LayoutInflater.from(parent.getContext());
如果(类型== 0){
鉴于= inflater.inflate(
R.layout.text_field,父母,假);
}其他{
鉴于= inflater.inflate(
R.layout.text_spinner,父母,假);
}
} ColumnProperties柱= columns.get(位置); TextView的COL_NAME =(TextView中)view.findViewById(R.id.column_name);
col_name.setText(column.getName()); 如果(类型== FOREIGN_KEY){
微调微调=(微调)view.findViewById(R.id.foreign_keys);
ArrayList的<串GT; spinner_list = spinner_strings.getStringArrayList(column.getName());
//列表<串GT;清单; ArrayAdapter spinner_adapter =新ArrayAdapter(这一点,android.R.layout.simple_spinner_item,spinner_list);
spinner_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(spinner_adapter);
} 返回视图。
}公共无效getSpinnerStrings(捆绑spinner_strings){
this.spinner_strings = spinner_strings;
}}
解决方案
@ρяσѕρєяķ写道:
使用
view.getContext()
或parent.getContext()
而不是这
块引用>I created the following class to populate a
listView
with two different kinds of views. One of the two kinds contain is a spinner, which I'm trying to populate withArraylists
(one for each spinner) contained in the bundle. The problem I'm dealing with is theArrayAdapter
constructor, which clearly has a problem with the context I'm using ("this"). Any ideas?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 wrote:
Use
view.getContext()
orparent.getContext()
instead ofthis
这篇关于使用&QUOT Android的背景下,这&QUOT;阶级不是一个活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文