![](/img/trans.png)
[英]java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView
[英]Android java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView
我正在嘗試打印listView中單擊的值,但后來我得到以下異常:
07-04 10:40:56.482: E/AndroidRuntime(1356): FATAL EXCEPTION: main
07-04 10:40:56.482: E/AndroidRuntime(1356): java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView
07-04 10:40:56.482: E/AndroidRuntime(1356): at com.passwordkeeper.ui.ActivityHomeScreen$1.onItemClick(ActivityHomeScreen.java:88)
這是一段代碼:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mTextView = (TextView) findViewById(R.id.labelList);
db = new DatabaseHandler(this);
createList();
displayList();
}
createList函數正常工作。 這是我的displayList方法:
public void displayList(){
this.setListAdapter(new ArrayAdapter<String>(this, R.layout.activity_home_screen, R.id.listTextView, mAccountNames));
mListView = getListView();
mListView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
String product = ((TextView) view).getText().toString();
Log.v("mSelectedProduct", product);
}
});
}
我的文件activity_home_screen.xml的xml代碼是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/listTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="28dp"
android:layout_marginTop="26dp"
android:textAppearance="?android:attr/textAppearanceLarge" />
任何幫助都會有用!
謝謝。
你可以試試這個
mListView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
TextView txtview = (TextView)view.findViewById(R.id.listTextView);
String product = txtview.getText().toString();
Log.v("mSelectedProduct", product);
}
});
用這個:
String product = ((TextView) view.findViewById(R.id.listTextView)).getText().toString();
您在OnItemClickListener中獲取的視圖將返回父布局,即您的案例中的LinearLayout。
您可以通過以下方式獲取文本視圖:
mListView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
TextView txtview = (TextView)view.findViewById(R.id.listTextView);
String product = txtview.getText().toString();
Log.v("mSelectedProduct", product);
}
});
mListView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
TextView textview= (TextView)view.findViewById(R.id.TEXTVIEW_ID);
String product = textView.getText().toString();
Log.v("mSelectedProduct", product);
}
});
將“TEXTVIEW_ID”替換為您在列表視圖項xml中給出的textview的id(如果沒有給出,請給出一個)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.