我有以下用于制作ListView的代码:
SimpleAdapter adapter=new SimpleAdapter(this, DictionaryDbWrapper.getInstance().getAllWords(),
android.R.layout.simple_list_item_2, new String[]{DictionaryDbHelper.WORD, DictionaryDbHelper.CATEGORY},
new int[]{android.R.id.text1, android.R.id.text2});
mList.setAdapter(adapter);
它工作并向我显示元素,一切正确。我还有OnItemClickListener,其中包含以下代码来点击项目:
View view=mList.getSelectedView();
if (view==null) {
Toast.makeText(UpdatingWordActivity.this, "1", Toast.LENGTH_LONG).show();
}
但是mList.getSelectedView()也返回null。为什么呢?
更新:为什么这个抛出异常:
View v=(View)mList.getItemAtPosition(0);
答案 0 :(得分:0)
对getSelectedView()
的调用适用于使用列表视图的单选按钮。见CHOICE_MODE_SINGLE。 getItemAtPosition()
只需在底层适配器上调用getItem(position)
;在你的情况下,它是一个SimpleAdapter。该转换引发异常,因为SimpleAdapter.getItem()
没有返回视图,它返回(我相信)适配器中给定位置的数据Map。其他适配器返回getItem()
方法的其他内容。例如, CursorAdapter 返回一个游标。
请参阅上面的答案,了解第一个问题的答案
答案 1 :(得分:-1)
Listview OnItemClickListener
有View v
作为参数,您需要使用此参数来获取文字。
以下是此topic的Android教程。