- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想在单击按钮时显示的 ListPopupWindow 中显示一个简单的字符串数组。然而,我遇到了问题,因为当我对 ArrayAdapter<String>
进行一些最小设置时或自定义适配器,当我去显示弹出窗口时遇到资源未找到异常。这是我正在使用的代码(后面是堆栈跟踪)。关于正在发生的事情有什么想法吗?
public class AndroidSandboxActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button btn = (Button)findViewById(R.id.btn1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showListPopup(btn);
}
});
}
public void showListPopup(View anchor) {
ListPopupWindow popup = new ListPopupWindow(this);
popup.setAnchorView(anchor);
ListAdapter adapter = new MyAdapter(this);
popup.setAdapter(adapter);
popup.show();
}
public static class MyAdapter extends BaseAdapter implements ListAdapter {
private final String[] list = new String[] {"one","two","three"};
private Activity activity;
public MyAdapter(Activity activity) {
this.activity = activity;
}
@Override
public int getCount() {
return list.length;
}
@Override
public Object getItem(int position) {
return list[position];
}
@Override
public long getItemId(int position) {
return position;
}
private static int textid = 1234;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView text = null;
if (convertView == null) {
LinearLayout layout = new LinearLayout(activity);
layout.setOrientation(LinearLayout.HORIZONTAL);
text = new TextView(activity);
text.setId(textid);
layout.addView(text);
convertView = layout;
} else {
text = (TextView)convertView.findViewById(textid);
}
text.setText(list[position]);
return convertView;
}
}
}
这是堆栈跟踪(令我感到困惑的是,当我使用自己的自定义适配器时,它说它正在使用 ArrayAdapter
):
Thread [<1> main] (Suspended (exception Resources$NotFoundException))
Resources.loadXmlResourceParser(int, String) line: 2047
Resources.getLayout(int) line: 853
PhoneLayoutInflater(LayoutInflater).inflate(int, ViewGroup, boolean) line: 389
ArrayAdapter.createViewFromResource(int, View, ViewGroup, int) line: 375
ArrayAdapter.getView(int, View, ViewGroup) line: 366
ListPopupWindow$DropDownListView(AbsListView).obtainView(int, boolean[]) line: 2146
ListPopupWindow$DropDownListView.obtainView(int, boolean[]) line: 1156
ListPopupWindow$DropDownListView(ListView).measureHeightOfChildren(int, int, int, int, int) line: 1261
ListPopupWindow.buildDropDown() line: 1083
ListPopupWindow.show() line: 517
AndroidSandboxActivity.showListPopup() line: 41
AndroidSandboxActivity$1.onClick(View) line: 28
Button(View).performClick() line: 3122
View$PerformClick.run() line: 11942
ViewRoot(Handler).handleCallback(Message) line: 587
ViewRoot(Handler).dispatchMessage(Message) line: 92
Looper.loop() line: 132
ActivityThread.main(String[]) line: 4028
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 491
ZygoteInit$MethodAndArgsCaller.run() line: 844
ZygoteInit.main(String[]) line: 602
NativeStart.main(String[]) line: not available [native method]
如有任何帮助,我们将不胜感激!
最佳答案
我弄清楚了为什么 ArrayAdapter
不起作用;我为数组适配器选择了一个不正确的资源 ID,因为我不完全理解 ArrayAdapter
在 ListView 方面的工作原理。使用这个内置的 android 资源:
android.R.layout.simple_dropdown_item_1line
在构建数组适配器时的相关资源参数中,我能够让事情正常进行。不过,我不确定为什么上面的自定义适配器不起作用,因为上面代码中的自定义适配器没有引用任何特定的 ID。我提供的堆栈跟踪可能来自使用了 ArrayAdapter
的旧版本代码。
关于android - 如何让 ListPopupWindow 与自定义适配器一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9986266/
我有一个 Android 应用程序,当用户单击 View 元素时,我会在其中创建一个 ListPopupWindow。 ListPopupWindow 小部件是使用全黑的默认主题创建的。 final
我想在单击按钮时显示的 ListPopupWindow 中显示一个简单的字符串数组。然而,我遇到了问题,因为当我对 ArrayAdapter 进行一些最小设置时或自定义适配器,当我去显示弹出窗口时遇到
目前,我正在以编程方式创建一个显示楼层列表和标题的弹出菜单。然而,仅仅改变标题的背景颜色并为标题添加一个关闭按钮被证明是一场噩梦。 我想用列表弹出窗口替换此弹出菜单,这样我就可以添加一个带有背景属性的
我安装了 android listpopupwindow 并在我的 android 应用程序中工作。 当我点击(并选择)一个项目而不是点击外部时,我希望关闭弹出列表。 我尝试了dismiss()和di
我试图设置 ListPopupWindow 的宽度和高度,但没有成功。我阅读了有关 LayatParams 的内容,但没有用于 ListPopupWindow 的 setLayoutParams。如何
我正在使用ListPopupWindow: @NonNull private ListPopupWindow createListPopupWindow() { ListPopupWindow
我决定通过扩展 TextView 和编写 ListPopupWindow 来创建我自己的自定义微调器。我想模拟原始 Spinner 的以下功能:单击微调器时显示下拉列表,第二次单击微调器时下拉列表消失
我的 Android 应用程序中有一个如下定义的 ListPopupWindow。 ListPopupWindow listPopupWindow; listPopupWindow =
我已将 TextWatcher 附加到我的应用程序中的 EditText 组件,并在文本更改后调用它; (mListPopupWindow 是 ListPopupWindow) mListPopupW
我正在尝试使用 ListPopupWindow 通过 ArrayAdapter 显示字符串列表(最终这将是一个更复杂的自定义适配器)。代码如下。如屏幕截图所示,生成的 ListPopupWindow
我正在创建 ListPopupWindow像这样: final ListPopupWindow insidelistPopupWindow = new ListPopupWindow(view.get
我正在尝试将 PopupWindow 与适配器一起使用,但发生了此异常。我试图搜索解决此问题的方法,但没有找到任何东西。 这里是异常 07-18 10:58:27.600: D/dalvikvm(15
我想在单击按钮时显示 ListPopupActivity,但它抛出了这个异常。 我已经仔细阅读了这个异常但无法解决问题项目中没有使用jar文件。 这是类: public class MainActiv
我已经实现了一对 EditText,并且它们都关联了 ListPopopWindow。 add 操作正常,所以,我在 EditText 字段上写了一些东西,然后按 enter 虚拟键盘的味道,这个值被
我是一名优秀的程序员,十分优秀!