@IsaAccisneros创建了新的SpinnerItem和MySpinnerAdapter类。我完全执行了他的新类。我的实现如下所示:
ArrayList<SpinnerItem> credValues = new ArrayList<SpinnerItem>();
credValues.add(new SpinnerItem("3.0",false));
credValues.add(new SpinnerItem("Credit", true));
MySpinnerAdapter adapter_cred = new MySpinnerAdapter(this.getActivity(),
android.R.layout.simple_spinner_item, credValues);
adapter_cred.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner spinCred = (Spinner)rootView.findViewById(R.id.cred_spinner);
spinCred.setAdapter(adapter_cred);
spinCred.setSelection(credValues.size() - 1);
而他的长相是这样的:
ArrayList<SpinnerItem> items = new ArrayList<SpinnerItem>();
items.add(new SpinnerItem("Item 1", false));
items.add(new SpinnerItem("Item 2", false));
items.add(new SpinnerItem("HINT", true)); // Last item
MySpinnerAdapter adapter = new MySpinnerAdapter(this, android.R.layout.simple_spinner_item, items);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setSelection(items.size() - 1);
那为什么我的行为怪异呢?我的代码的上下文是我的AddItemFragment在我的activity中的onCreateView。我说错了什么?谢谢!
编辑:已请求适配器类代码...
class SpinnerItem {
private final String text;
private final boolean isHint;
public SpinnerItem(String strItem, boolean flag) {
this.isHint = flag;
this.text = strItem;
}
public String getItemString() {
return text;
}
public boolean isHint() {
return isHint;
}
}
class MySpinnerAdapter extends ArrayAdapter<SpinnerItem> {
public MySpinnerAdapter(Context context, int resource, List<SpinnerItem> objects) {
super(context, resource, objects);
}
@Override
public int getCount() {
return super.getCount() - 1; // This makes the trick: do not show last item
}
@Override
public SpinnerItem getItem(int position) {
return super.getItem(position);
}
@Override
public long getItemId(int position) {
return super.getItemId(position);
}
}
原因是您没有重写适配器的getView()
方法。因此,它使用默认实现,如下所示:
T item = getItem(position);
if (item instanceof CharSequence) {
text.setText((CharSequence)item);
}
else {
text.setText(item.toString());
}
在SpinnerItem
中,您没有ToString()
方法,因此它使用默认值(即您看到的包名)
解决此问题的一种方法是将toString()
方法添加到SpinnerItem
中:
class SpinnerItem {
private final String text;
private final boolean isHint;
public SpinnerItem(String strItem, boolean flag) {
this.isHint = flag;
this.text = strItem;
}
public String getItemString() {
return text;
}
public boolean isHint() {
return isHint;
}
@Override
public String toString() {
return text;
}
}
如果您想要更多的控制,比如为提示文本设置不同的颜色等,我建议您自己实现getView()
方法。
但是,这也不起作用。
我已经为我的自定义日志拦截器执行了以下操作 我正在将拦截器设置为restTemboard 记录器正在将响应正确地打印到控制台,但最后响应会以空的形式返回给调用者。我无法调试和解决它。 我已经弄明白了StreamUtils。copyToString(response.getBody(),字符集。defaultCharset())正在读取一次输入流,并且不再在其中保存响应正文(现在为空) 还有谁也面临
我正在尝试为Xamarin.Forms创建一个自定义的ButtonRenderer。下面是一个简单的测试,我一直在尝试根据一些教程组合起来,但我似乎可以使它工作。
我有财产课: 还有一种方法: 在类的构造函数我有: 为什么当我从object按键调用函数时。我收到一条未定义的消息,为什么变量在内部不可用:
问题内容: 我一直在跟随一个教程,教科书向我保证这可以工作,但是 错误:[ng:areq]参数’SimpleController’不是一个函数,未定义 为什么?我掉毛了,在它上面上下移动,看不到问题。为什么出现未定义状态? 问题答案: 我的猜测是您使用的angular.js版本是更新的。 有一个重大变化,即: 默认情况下 , angular将不再寻找控制器。有关更多详细信息,请参见3f2232b5
我正在使用JPA2.1(由Hibernate4.2.11支持)和Spring4.0.2开发一个应用程序。我们正在使用Envers审核项目实体中的更改。这很好。当我们尝试使用自定义修订实体时,问题就出现了,正如Envers文档所述:http://docs.jboss.org/hibernate/core/4.1/devguide/en-US/html/ch15.html#envers-修正日志 正如