我試圖強制類型轉換數據,但是當我寫onItemClick下TextView clickData=(TextView) view
(...)logcat的顯示信息:ClassCastException:android.widget.RelativeLayout不能轉換爲android.widget.TextView?
java.lang.ClassCastException:android.widget.RelativeLayout不能轉換爲android.widget .TextView
我不知道爲什麼。
這從主要活動屬於:
public class ListViewForAllContact extends AppCompatActivity {
ListView myListView;
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.listviewforallcontact);
ContactDatabase onbOfContactDatabase=new ContactDatabase(getBaseContext());
Cursor mCursor= onbOfContactDatabase.phoneName();
String[] fromFileName=new String[]{ContactDatabase.NAME};
int[] toViewId=new int[]{R.id.textView5};
SimpleCursorAdapter simpleCursorAdapter;
simpleCursorAdapter=new SimpleCursorAdapter(this,R.layout.forreading,mCursor,fromFileName,toViewId,0);
myListView=(ListView)findViewById(R.id.listView);
myListView.setAdapter(simpleCursorAdapter);
myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView clickData=(TextView) view;//becouse of this line error will come.
Toast.makeText(getBaseContext(), clickData.getText(), Toast.LENGTH_LONG).show();
}
});
}
}
這是XML與ListView控件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/textView5"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"/>
</RelativeLayout>
爲什麼view是RelativeLayout? –
它的相對佈局,因爲那是圍繞着你的文本視圖的視圖,它沒有得到對文本視圖的點擊,它獲得了對該視圖/單元格的點擊而不是它內部的項目。 –
好吧我更新我的答案,如果它很難理解說,但它是控制列表視圖和那裏項目的最佳方式。 –