将两个.sqlite DB添加到列表中并按适配器显示

时间:2014-08-08 13:27:49

标签: android database list sqlite listview

我在Android中有两个数据库.sqlite productosdb.sqlite entradas.sqlite ,每个都有一个表。
productosdb 中,我有表"entradas"={id,cod1,cod2,descrip,present,pale},而另一个"entradas"={id,idref(that is cod1 already saved from the other table),cant,vto}

我希望显示表"entradas"的所有项目,但是向适配器提供包含两个表的所有字段的列表。当我从表"entradas"获取一行时,我收到消息idrefto search the other the missing fields。有些东西不起作用。以下是一些代码:

private List<ProductoSUMADO> listasumada = new LinkedList<ProductoSUMADO>();  

Producto temporalProducto = new Producto();  

List<ProductoConVencimiento> temporalEntrada = new LinkedList<ProductoConVencimiento>();

String asd = bundle.getString("codigo");

temporalProducto = managerdb.getProductoPorCodigoBarras(asd);

String sss = temporalProducto.getCodprod();
temporalEntrada = db.getProductosPorIDRef(sss);

for (int pos = 0; pos < temporalEntrada.size(); pos++)
{
   ProductoSUMADO p = new ProductoSUMADO(temporalProducto.getCodbar()),
   temporalProducto.getCodprod(),
   temporalProducto.getDescrip(),
   temporalProducto.getPresent(),
   temporalProducto.getPale(),
   temporalEntrada.get(pos).getCant(),
   temporalEntrada.get(pos).getVto(),
   temporalEntrada.get(pos).getNotas());

   listasumada.add(p);
}

CustomAdapter2 adapter = new CustomAdapter2(this, listasumada);
listview.setAdapter(adapter);

也许你明白我想做什么,并展示另一种方法。

1 个答案:

答案 0 :(得分:0)

你做错了。只需创建一个数据库和两个表&#34; productos&#34;和&#34; entradas&#34; 那么你将能够使用rawQuery加入数据。

在此处详细了解SQLite:vogella

它有示例,所以你可以测试它!

加入示例:

String MY_QUERY = "SELECT * FROM table_a a INNER JOIN table_b b ON a.id=b.other_id WHERE b.property_id=?";
db.rawQuery(MY_QUERY, new String[]{String.valueOf(propertyId)});