2013-12-16 93 views
1

我有一個自定義的ListView:安卓:getItemAtPosition()在自定義列表視圖:圖像和TextView的

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal"> 

<ImageView 
    android:id="@+id/image" 
    android:layout_width="70dip" 
    android:layout_height="50dip" 
    android:contentDescription="@string/menu_settings" 
    android:scaleType="centerCrop" 
    android:src="@drawable/ico_slide" /> 

<TextView 
    android:id="@+id/text" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="left|center_vertical" 
    android:layout_marginLeft="10dip" 
    android:text="@string/app_name" 
    android:layout_weight="1" 
    android:textSize="20sp" /> 

我想要得到的TextView

public void onItemClick(final AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 
      Object[] item = (Object[]) arg0.getItemAtPosition(arg2); 
      final String name = item[1].toString(); 

文本通過使用此,它有CastClassException和行:

Object[] item = (Object[]) arg0.getItemAtPosition(arg2); 

有誰知道如何獲得TextView的文字?

+0

ClassCastException異常應該告訴你什麼類型你想從投。什麼是異常消息說的? – luiscubal

回答

4

使用以下。第二個參數arg1是一個視圖。用它來初始化文本視圖並獲取字符串。

public void onItemClick(final AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 

      TextView tv = (TextView)arg1.findViewById(R.id.text); 
      String textvalue= tv.getText().toString() 
} 
+1

它完美的工作。感謝您的幫助! –

0

如果您使用的ViewHolder模式,將Adapter你應該使用getTag()讓你TextView性能方面的原因:

public void onItemClick(final AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
     ViewHolder holder = (ViewHolder) arg1.getTag(); 
     String text = holder.text.getText(); 
}