Android ListView-setOnItemClickListener不工作
我正在尝试使用自定义适配器实现listview。问题在于,每当触发McClickListener事件时,它就会崩溃 java.lang.ClassCastException:imp.translator.diana.lang.CardItemData 无法转换为java.lang.String 在imp.translator.diana.lang.Speak$1.onItemClick(Speak.java:41) 在android.widget.AdapterView.performItemClick 这是我的班级:Android ListView-setOnItemClickListener不工作,android,listview,Android,Listview,我正在尝试使用自定义适配器实现listview。问题在于,每当触发McClickListener事件时,它就会崩溃 java.lang.ClassCastException:imp.translator.diana.lang.CardItemData 无法转换为java.lang.String 在imp.translator.diana.lang.Speak$1.onItemClick(Speak.java:41) 在android.widget.AdapterView.performItemC
final ListView list = (ListView) findViewById(R.id.list_view);
list.addHeaderView(new View(this));
list.addFooterView(new View(this));
BaseInflaterAdapter<CardItemData> adapter = new BaseInflaterAdapter<CardItemData>(new CardInflater());
CardItemData data = new CardItemData("Translate");
adapter.addItem(data, false);
CardItemData data2 = new CardItemData("Voice to Text");
adapter.addItem(data2, false);
CardItemData data3 = new CardItemData("Record");
adapter.addItem(data3, false);
CardItemData data4 = new CardItemData("Info");
adapter.addItem(data4, false);
list.setAdapter(adapter);
list.setClickable(true);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView myAdapter, View myView, int position, long mylng) {
String selectedFromList = (String) (myAdapter.getItemAtPosition(position));
}
});
你知道这里可能出了什么问题吗
你知道这里可能出了什么问题吗
您的getItem
正在返回T
,在您的情况下,它是CardItemData
的一个实例,但这里:
String selectedFromList = (String) (myAdapter.getItemAtPosition(position));
您正在将其强制转换为字符串
。您可能希望将其强制转换为CardItemData
。顺便说一句,Java支持协变返回类型,因此您应该能够使用
@Override
public T getItem(int pos) {
return m_items.get(pos);
}
java.lang.ClassCastException:imp.translator.diana.lang.CardItemData
无法转换为java.lang.String
上述例外情况是由于
String selectedFromList=(String)(myAdapter.getItemAtPosition(position))代码>在这里,您可以尝试将CardItemData
转换为String
试试这个:
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView myAdapter, View myView, int position, long mylng) {
CardItemData selectedFromList = (CardItemData) (myAdapter.getItemAtPosition(position));
String pos = selectedFromList.getText1();
}
});
这是一个类型转换问题,您正在将“CardItemData”类型转换为“String”
字符串selectedFromList=(字符串)(myAdapter.getItemAtPosition(位置))
使用“getItem”方法获取单击的“CardItemData”项
检查下面给出的链接
它不是这样工作的,它说“无法解析符号”;将其更改为此CardItemData selectedFromList=(CardItemData)(myAdapter.getItemAtPosition(position));String pos=selectedFromList.getText1();现在它可以工作了。谢谢你的回答!
@Override
public T getItem(int pos) {
return m_items.get(pos);
}
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView myAdapter, View myView, int position, long mylng) {
CardItemData selectedFromList = (CardItemData) (myAdapter.getItemAtPosition(position));
String pos = selectedFromList.getText1();
}
});