我想用自定義適配器實現列表視圖。問題是,只要觸發了onItemClickListener事件,它就會崩潰。ListView - setOnItemClickListener不工作
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
這是我的課:
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));
}
});
和我的適配器:
public class BaseInflaterAdapter<T> extends BaseAdapter
{
private List<T> m_items = new ArrayList<T>();
private IAdapterViewInflater<T> m_viewInflater;
public BaseInflaterAdapter(IAdapterViewInflater<T> viewInflater)
{
m_viewInflater = viewInflater;
}
public BaseInflaterAdapter(List<T> items, IAdapterViewInflater<T> viewInflater)
{
m_items.addAll(items);
m_viewInflater = viewInflater;
}
public void setViewInflater(IAdapterViewInflater<T> viewInflater, boolean notifyChange)
{
m_viewInflater = viewInflater;
if (notifyChange)
notifyDataSetChanged();
}
public void addItem(T item, boolean notifyChange)
{
m_items.add(item);
if (notifyChange)
notifyDataSetChanged();
}
public void addItems(List<T> items, boolean notifyChange)
{
m_items.addAll(items);
if (notifyChange)
notifyDataSetChanged();
}
public void clear(boolean notifyChange)
{
m_items.clear();
if (notifyChange)
notifyDataSetChanged();
}
@Override
public int getCount()
{
return m_items.size();
}
@Override
public Object getItem(int pos)
{
return getTItem(pos);
}
public T getTItem(int pos)
{
return m_items.get(pos);
}
@Override
public long getItemId(int pos)
{
return pos;
}
@Override
public View getView(int pos, View convertView, ViewGroup parent)
{
return m_viewInflater != null ? m_viewInflater.inflate(this, pos, convertView, parent) : null;
}
}
和CardItemData:
public class CardItemData
{
private String m_text1;
public CardItemData(String text1)
{
m_text1 = text1;
}
public String getText1()
{
return m_text1;
}
}
任何想法可能是錯誤的嗎?
給它沒有工作方式,它說:「不能解析符號」; 將其更改爲此 CardItemData selectedFromList =(CardItemData)(myAdapter.getItemAtPosition(position)); String pos = selectedFromList.getText1();它現在可用。謝謝您的回答! – Diana
ok會更新。 – Rustam