我无法从列表视图中的选定项目获取文本... pleeeeasss帮助

时间:2010-03-30 15:09:37

标签: android listview

我总是得到一个ClassCastException错误...我不知道还有什么... - 我正在使用数据绑定概念从sqlite3数据库填充listview。 - 我只想在长按一下后获取所选项目文本。

这是活动的代码:

public class ItemConsultaGastos extends ListActivity  {

 private DataHelper dh ;
 TextView seleccion;

 private static String[] FROM = {DataHelper.MES, DataHelper.ANO};  
 private static int[] TO =  {R.id.columnaMes, R.id.columnaAno };    

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.muestrafechas);

        this.dh = new DataHelper(this);
        Cursor cursor = dh.selectAllMeses();            

        startManagingCursor(cursor);

        this.mostrarFechas(cursor);

        ListView lv = getListView();
        lv.setOnItemLongClickListener(new OnItemLongClickListener(){
         @Override
         public boolean onItemLongClick(AdapterView<?> arg0, View arg1,int row, long arg3) {

            //here is where i got the classCastException.
            String[] tmp = (String[]) arg0.getItemAtPosition(row);

            //tmp[0] ist the Text of the first TextView displayed by the  clicked ListItem 
            Log.w("Gastos: ", "El texto: " + tmp[0].toString());

            return true;
         }
     });

 }

 private void mostrarFechas(Cursor cursor) {
       SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.muestrafechasitem,cursor, FROM, TO);
       setListAdapter(adapter);
 }

}

这是一个xml,用于定义要在listview上显示的行:

<?xml version="1.0" encoding="utf-8"?>


<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:padding="10sp">

       <TextView
     android:id="@+id/espacio"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="    " />
       <TextView
       android:id="@+id/columnaAno"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textSize="20sp" 
       android:layout_toRightOf="@+id/espacio"/>
       <TextView
     android:id="@+id/separador1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="            --             "
     android:layout_toRightOf="@+id/columnaAno"
     android:textSize="20sp" />
       <TextView
       android:id="@+id/columnaMes"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_toRightOf="@+id/separador1" 
       android:textSize="20sp"/> 

</RelativeLayout>

1 个答案:

答案 0 :(得分:3)

变化:

String[] tmp = (String[]) arg0.getItemAtPosition(row);

为:

Object tmp = arg0.getItemAtPosition(row);

在获取ClassCastException的行上设置断点。以调试模式启动应用程序(在Eclipse中右键单击项目并选择Debug as-&gt; Android Application)。当你到达代码中的断点时,检查tmp以查看它实际上是什么。它显然不像你期望的那样String[]