在Android的5.0微调适配器问题 [英] Spinner adapter issue in Android 5.0
问题描述
我的应用不与Android兼容5
My app is not compatible with Android 5.
当我在其他任何版本上运行它它的工作原理没有问题。
When I run it in any other version it works with no issues.
这是当Android的5运行它什么出现在logcat的:
This is what appears in the logcat when run it in Android 5:
05-16 23:44:10.287 1969-1969/com.barakah.camel E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.barakah.camel, PID: 1969
java.lang.IllegalArgumentException: Spinner adapter view type count must be 1
下面的问题所在基础上,logcat的:
Here's where the problem lies based on the logcat:
public void regionSpinnerSetup() {
ParseQueryAdapter.QueryFactory<ParseObject> factory = new ParseQueryAdapter.QueryFactory<ParseObject>() {
public ParseQuery create() {
ParseQuery query = new ParseQuery("Region");
return query;
}
};
regionAdapter = new ParseQueryAdapter<ParseObject>(getActivity(),
factory);
regionAdapter.setTextKey("name");
regionSpinner.setAdapter(regionAdapter);
regionSpinner.setSelection(1);
regionSpinner.setOnItemSelectedListener(new RegionSpinnerListener());
}
public void CategorySpinnerSetup() {
ParseQueryAdapter.QueryFactory<ParseObject> factory = new ParseQueryAdapter.QueryFactory<ParseObject>() {
public ParseQuery create() {
ParseQuery query = new ParseQuery("Category");
return query;
}
};
categoryAdapter = new ParseQueryAdapter<ParseObject>(getActivity(),
factory);
categoryAdapter.setTextKey("name");
categorySpinner.setAdapter(categoryAdapter);
categorySpinner.setSelection(1);
categorySpinner
.setOnItemSelectedListener(new CategorySpinnerListener());
}
class RegionSpinnerListener implements Spinner.OnItemSelectedListener {
@Override
public void onItemSelected(AdapterView parent, View v, int position,
long id) {
// TODO Auto-generated method stub
ParseObject theSelectedObject = regionAdapter.getItem(position);
Log.e("ABC", "Name is : " + theSelectedObject.getString("name") + " objectId is : " + theSelectedObject.getObjectId());
regionobject = theSelectedObject;
}
regionSpinner和categorySpinner两者都是类型微调对象
...
Both regionSpinner and categorySpinner are objects of type Spinner ...
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
regionSpinnerSetup();
CategorySpinnerSetup();
}
不知道如何解决呢?
Any idea how to solve it?
推荐答案
我没有与 ParseQueryAdapter
的经验,但是从它阅读起来,似乎你可以做这样的事情。
I don't have experience with ParseQueryAdapter
, but from reading up on it, it seems you could do something like this.
首先,创建自己的类扩展 ParseQueryAdapter
,并覆盖 getViewTypeCount()
:
First, create your own class that extends ParseQueryAdapter
, and override getViewTypeCount()
:
public class MyParseAdapter extends ParseQueryAdapter<ParseObject> {
public MyParseAdapter(Context context, QueryFactory<ParseObject> clazz){
super(context, clazz);
}
@Override
public int getViewTypeCount() {
return 1;
}
}
然后,只需每到一个地方,你有 ParseQueryAdapter
在code,用 MyParseAdapter
替换:
public void regionSpinnerSetup() {
MyParseAdapter.QueryFactory<ParseObject> factory = new MyParseAdapter.QueryFactory<ParseObject>() {
public ParseQuery create() {
ParseQuery query = new ParseQuery("Region");
return query;
}
};
regionAdapter = new MyParseAdapter<ParseObject>(getActivity(),
factory);
regionAdapter.setTextKey("name");
regionSpinner.setAdapter(regionAdapter);
regionSpinner.setSelection(1);
regionSpinner.setOnItemSelectedListener(new RegionSpinnerListener());
}
public void CategorySpinnerSetup() {
MyParseAdapter.QueryFactory<ParseObject> factory = new MyParseAdapter.QueryFactory<ParseObject>() {
public ParseQuery create() {
ParseQuery query = new ParseQuery("Category");
return query;
}
};
categoryAdapter = new MyParseAdapter<ParseObject>(getActivity(),
factory);
categoryAdapter.setTextKey("name");
categorySpinner.setAdapter(categoryAdapter);
categorySpinner.setSelection(1);
categorySpinner
.setOnItemSelectedListener(new CategorySpinnerListener());
}
class RegionSpinnerListener implements Spinner.OnItemSelectedListener {
@Override
public void onItemSelected(AdapterView parent, View v, int position,
long id) {
// TODO Auto-generated method stub
ParseObject theSelectedObject = regionAdapter.getItem(position);
Log.e("ABC", "Name is : " + theSelectedObject.getString("name") + " objectId is : " + theSelectedObject.getObjectId());
regionobject = theSelectedObject;
}
这篇关于在Android的5.0微调适配器问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!