我总是得到一个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>
答案 0 :(得分:3)
变化:
String[] tmp = (String[]) arg0.getItemAtPosition(row);
为:
Object tmp = arg0.getItemAtPosition(row);
在获取ClassCastException的行上设置断点。以调试模式启动应用程序(在Eclipse中右键单击项目并选择Debug as-&gt; Android Application)。当你到达代码中的断点时,检查tmp以查看它实际上是什么。它显然不像你期望的那样String[]
。