2014-05-14 69 views
-2

對於ListView,我有arrayAdapter。在這個arrayAdapter裏面,我打電話的方法是由於某種原因導致ClassCastException設置OnItemClickListener時出現ClassCastException

一個ArrayAdapter

String[] strings = /*...*/; 
ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,R.layout.item,strings); 
ListView listView = (ListView) (findViewById(R.id.listView)); 
listView.setAdapter(adapter); 

崩潰代碼

private void addListener() { 
    ListView listView = (ListView) findViewById(R.id.listView); 
    listView.setOnItemClickListener(
     new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long id) { 
      TextView textView = (TextView) viewClicked; 
     } 
    }); 
} 
+0

你的layout.xml中的「R.id.s5_tv_friend_request_list」是LisView嗎? – krossovochkin

+0

「_如何解決這個問題_」不要試圖將課程投入到其他課程中。 – csmckelvey

+1

TextView friend_request =(TextView)viewClicked;包含錯誤。 如果您使用ArrayAdapter,然後使用TextView friend_request =(TextView)viewClicked.findViewById(android.R.id.text1); –

回答

2

被點擊你的ListView你的看法是不是一個TextView。 TextView可能包含在ListItem本身的佈局中。因此,它woud是這樣

TextView friendRequest = (TextView) viewClicked.findViewById(R.id.friend_request); 

通知的標準變量命名約定,它是在你命名了變量(以下劃線空間修改)的方式申報修改的駱駝和XML變量很好的做法。

如果不是這種情況,檢查以確保你實際上是使用正確的列表 -

ListView s5_lv_friend_request_list = (ListView) findViewById(R.id.s5_tv_friend_request_list);,使該

<ListView 
    android:id="@+id/s5_tv_friend_request_list" 
    ... /> 

包含某處在XML的含義你活動。

0

只有適配器的每一行都在膨脹TextView(convertView == TextView)時,您的代碼纔會起作用。如果這是真的,那就沒問題。如果沒有,你必須做:

TextView text = (TextView) viewClicked.findViewById(THE_ID_OF_THE_TEXT_VIEW); 
相關問題