我有这个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 [] ??任何人都可以解释如何修复它以及它为什么会抛出错误?
答案 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?