3

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" />  

どんな助けでも役に立ちます!

ありがとうございました。

4

4 に答える 4

4

これを試すことができます

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);
        }           
    });
于 2013-07-04T05:27:29.670 に答える
1

これを使って:

String product = ((TextView) view.findViewById(R.id.listTextView)).getText().toString();
于 2013-07-04T05:24:37.063 に答える
1

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);
        }           
    });
于 2013-07-04T05:36:37.407 に答える
0
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で指定したテキストビューのIDに置き換えます(指定されていない場合は指定してください)。

于 2013-07-04T05:29:21.747 に答える