- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 Android 应用程序。在我的应用程序中,我正在使用微调器 View 。但是我正在使用带有自定义适配器的微调器 View ,因为我的微调器很快就会变得更加复杂。 spinner 的所有数据都来自服务器通过 volley。我的带有客户适配器的微调器 View 正确显示了数据。但问题是当我单击下拉菜单选择项目时。它抛出异常。
这是我的微调器 View 的客户适配器:
public class SpinnerItemAdapter extends ArrayAdapter<NVItem> {
private ArrayList<NVItem> values;
private Context context;
private ArrayList<String> selectedValues;
static class ViewHolder{
public RadioButton radioButton;
public TextView title;
}
public SpinnerItemAdapter(Context contextParam,ArrayList<NVItem> itemsParam,ArrayList<String> selectedParam)
{
super(contextParam,-1,itemsParam);
this.values = itemsParam;
this.context = contextParam;
this.selectedValues = selectedParam;
}
@Override
public View getView(final int position,View convertView,ViewGroup parent)
{
View rowView = convertView;
final ViewHolder viewHolder;
if(rowView==null)
{
LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = layoutInflater.inflate(R.layout.spinner_item,null);
viewHolder = new ViewHolder();
viewHolder.radioButton = (RadioButton)rowView.findViewById(R.id.spinner_item_radio);
viewHolder.title = (TextView)rowView.findViewById(R.id.spinner_item_title);
rowView.setTag(viewHolder);
}
else{
viewHolder = (ViewHolder) rowView.getTag();
}
//rowView.setId(values.get(position).getId());
viewHolder.title.setText(values.get(position).getName());
return rowView;
}
@Override
public int getCount() { return values.size(); }
@Override
public NVItem getItem(int position) { return values.get(position); }
@Override
public long getItemId(int position) { return position; }
}
这就是我在 Android 中打开微调器对话框并在单击按钮时设置适配器的方式:
private void showCategorySpinner()
{
View view = layoutInflater.inflate(R.layout.choose_spinner,null);
Spinner categorySpinner = (Spinner)view.findViewById(R.id.chooser_spinner);
ArrayList<NVItem> items = new ArrayList<NVItem>();
for(int i=0;i<categoryItems.size();i++)
{
NVItem item = new NVItem();
item.setId(categoryItems.get(i).getId());
item.setName(categoryItems.get(i).getName());
items.add(item);
}
ArrayAdapter adapter = new SpinnerItemAdapter(getBaseContext(),items,new ArrayList<String>());
categorySpinner.setAdapter(adapter);
AlertDialog.Builder b = new AlertDialog.Builder(CreateItemActivity.this);
b.setView(view);
b.show();
}
当点击打开微调器对话框的按钮时调用上述函数。
所有绑定(bind)到微调器和打开微调器对话框的数据都可以找到。如下面的屏幕截图所示。但是当点击屏幕截图中圈出的按钮时会抛出错误。
这是截图:
这是单击下拉箭头时 logcat 中的错误:
03-17 22:26:37.925 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion W/EGL_genymotion: eglSurfaceAttrib not implemented
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion W/ResourceType: No known package when getting value for resource number 0xffffffff
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion D/AndroidRuntime: Shutting down VM
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xa61c8908)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: FATAL EXCEPTION: main
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: android.content.res.Resources$NotFoundException: Resource ID #0xffffffff
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.content.res.Resources.getValue(Resources.java:1014)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.content.res.Resources.loadXmlResourceParser(Resources.java:2139)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.content.res.Resources.getLayout(Resources.java:853)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:371)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.widget.ArrayAdapter.getDropDownView(ArrayAdapter.java:415)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.widget.Spinner$DropDownAdapter.getDropDownView(Spinner.java:737)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.widget.Spinner$DropDownAdapter.getView(Spinner.java:733)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.widget.Spinner.measureContentWidth(Spinner.java:681)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.widget.Spinner$DropdownPopup.show(Spinner.java:959)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.widget.Spinner.performClick(Spinner.java:609)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.view.View$PerformClick.run(View.java:17355)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:725)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:92)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.os.Looper.loop(Looper.java:137)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5041)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-17 22:29:01.685 32568-32568/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
我的代码有什么问题?
当我像这样更改 Adapter 的构造函数时
super(contextParam,R.layout.support_simple_spinner_dropdown_item,valuesParam);
列表项如下图所示。
最佳答案
除了在适配器中实现 getDropDownView()
外,无需更改适配器 -
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View dropDownView = inflater.inflate(R.layout.dropdown, parent, false);
TextView view1 = (TextView)dropDownView.findViewById(<view_id>);
view1.setText(values.get(position).getName());
return dropDownView;
}
其中 R.layout.dropdown
是下拉 View 的布局 xml。它可以是任何 UI - 简单或复杂。
关于android - 在 Android 中单击下拉菜单时,带有客户适配器的微调器抛出 Resources$NotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36072859/
来自 java docs 公共(public) FileWriter(String fileName) 抛出 IOException 抛出: IOException - 如果指定的文件存在但它是目录而
我使用以下代码将我的 .net 客户端(基于 CQL)连接到 3 节点 Cassandra 集群。我以 30 条记录/秒的速度(从 RabbitMQ)获取数据,并且它们顺利地存储在 cassandra
如果在读取文件时缺少字段,我应该捕获 NoSuchElementException。如果缺少一个字段,我只需要跳到文件的下一行。我的问题是,我在哪里实现我的 try/catch 代码来做到这一点?这是
我正在尝试使用 ASP.NET MVC 实现 OpeinID 登录。我正在尝试按照 http://blog.nerdbank.net/2008/04/add-openid-login-support-
学习使用 Java 进行 xml 解析,并且正在编写一个测试程序来尝试各种东西。所有测试 System.out.println() 都是我在控制台中所期望的,除了 childElement 返回 [n
我正在尝试使用 SwingUtilities 创建 JFrame Thread tt = new Thread(new Runnable() { public void run
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我写了这段代码: MethodInfo method2 = typeof(IntPtr).GetMethod( "op_Explicit", Bind
我开始学习 Java,并且正在根据书本做一些练习。在执行此操作时,我遇到了以下错误:线程“main”java.util.InputMismatchException 中出现异常。我正在编写一个简单的程
我有一个文本文件,其中前两行是整数 m 和 n,然后有 m 行,每行都有 n 管道分隔值。我编写了一个程序,读取文件并使用文件中的值创建 m*n 数组,它工作了无数次,然后突然,使用相同的代码,使用相
所以我尝试使用在另一个类中生成的 bean 以在主应用程序中使用 package com.simon.spring.basics.properties; import org.spri
我还没有完成这个应用程序,但我希望在我的手机上看到它的样子。但是,它会强制关闭并引发 InstantiationException。 logcat 异常: 09-19 20:13:47.987: D/
我想从 UIViewController 加载一个基于 SwiftUI 的 View ,该 View 读取包本地的 json。仅 swiftUI 项目中的代码和绑定(bind)工作正常,当我利用 UI
'java.net.SocketTimeoutException:连接超时' 循环一段时间后我收到此错误。为什么我会收到 SocketTimeoutException?我该如何修复这个错误? @Ove
当有 null 值时抛出 ArgumentNullException() 是个好主意吗? This thread 没有提到在 null 上抛出的最明显的异常。 谢谢 最佳答案 ArgumentNull
我得到这个异常: NullReferenceException Object reference not set to an instance of an object at Namespace
所以其中一个方法的描述如下: public BasicLinkedList addToFront(T data) This operation is invalid for a sorted list
我正在使用 Intellij Idea,当我去生成 JavaDocs(通过工具 -> 生成 JavaDoc)时,我抛出了一个 IllegealArgumentException,没有关于发生了什么问题
我正在学习 C++ 中的互斥锁,但以下代码(摘自 N. Josuttis 的“C++ 标准库”)有问题。 我不明白为什么它会阻塞/抛出除非我在主线程中添加this_thread::sleep_for(
我正在试验 JavaFX 标签和组,通过鼠标拖动将它们移动到屏幕上。新节点从一些线程添加到动画组。但是,有时我会突然看到以下异常 - 我假设,当某些节点重叠时。但是不知道是什么问题……因为不涉及我的代
我是一名优秀的程序员,十分优秀!