无法将对象[]强制转换为resultado []

时间:2014-04-19 19:53:05

标签: java android

我有这个resultado类,我在一个ArrayList方法中实现DataBaseManager所做的:

package moviles.fingertwist;

public class resultado {

    private String id;
    private String resultado;

    public resultado(String Id, String Resultado)
    {
        id=Id;
        resultado = Resultado;
    }

    public String getResultad()
    {
        return resultado;
    }

}

并拥有此类DataBaseManager.java,其中我有与DB交互的方法,:

public ArrayList ListaChida() { 

final ArrayList dirArray = new ArrayList(); Cursor d = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);

d.moveToFirst();
while (!d.isAfterLast() ) {
resultado e = new resultado(d.getString(0),d.getString(1)); dirArray.add(e); d.moveToNext(); } d.close();

return dirArray;
}

所以稍后在lista中,我想制作一个数组的ListView,因为一个错误而无法使它...:C继承代码:

public class lista extends Activity { ListView listView ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_lista);



    // Get ListView object from xml
    listView = (ListView) findViewById(R.id.list);

    //recibe datos de resultado

    DataBaseManager dbm = new DataBaseManager(this);
    resultado[] dirArray=   (resultado[]) dbm.ListaChida().toArray();
    String[] Res = new String[dbm.ListaChida().size()];
    for(int i = 0; i< dbm.ListaChida().size(); i++)
    {
        resultado res=dirArray[i];
        Res[i] = res.getResultad();
    }



    // Define a new Adapter
    // First parameter - Context
    // Second parameter - Layout for the row
    // Third parameter - ID of the TextView to which the data is written
    // Forth - the Array of data

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
      android.R.layout.simple_list_item_1, android.R.id.text1, Res);


    // Assign adapter to ListView
    listView.setAdapter(adapter); 

}
}

我收到错误:object []无法转换为resultado [] ??任何人都可以解释如何修复它以及它为什么会抛出错误?

1 个答案:

答案 0 :(得分:1)

您调用的toArray版本返回Object个数组。您无法从Object的数组转换为非Object的数组。相反,请使用其他版本的toArray

resultado[] dirArray= dbm.ListaChida().toArray(new resultado[0]);

有充分的理由禁止这种演员。想象一下,如果你可以施展它将会发生什么:

Object [] a = new Object[2];
a[0] = "blue";
a[1] = "red";
String [] b = (String []) a; // a and b now refer to the same array; this does NOT work!!
a[0] = new Date(); 
// What's b[0] now?