2013-12-16 94 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(); 
}